{
  "nbformat": 4,
  "nbformat_minor": 5,
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3 (ipykernel)",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.8.11"
    },
    "colab": {
      "name": "Copy of tutorial_5_neuromorphic_datasets.ipynb",
      "provenance": [],
      "include_colab_link": true
    },
    "accelerator": "GPU",
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "9f46301d16924494ada03e7496af98ee": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_397436bca741424c886e7f67805eebc3",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_e965cc586d5f4d5aaf8c435ebd4bf35c",
              "IPY_MODEL_be2f2e3ca1b34106874e6b5c8cd2051e",
              "IPY_MODEL_b3a18813d8684b3ab7b9d944d8e74e4f"
            ]
          }
        },
        "397436bca741424c886e7f67805eebc3": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "e965cc586d5f4d5aaf8c435ebd4bf35c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_37deac4746684f189a32858514a780a4",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": "",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_83b65be63ec841288496bd9ad33dbbab"
          }
        },
        "be2f2e3ca1b34106874e6b5c8cd2051e": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_c87ffeb8f6f54e1b871d129cd783de9f",
            "_dom_classes": [],
            "description": "",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 1181572961,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 1181572961,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_2789fbacce8f4cc8a240daa6c6d45d15"
          }
        },
        "b3a18813d8684b3ab7b9d944d8e74e4f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_bfe2d8fcea404d22bbc61a69ae60c802",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 1181573120/? [00:20&lt;00:00, 60231750.25it/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_64ab952b23bd4406af5cc6d4f72b257e"
          }
        },
        "37deac4746684f189a32858514a780a4": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "83b65be63ec841288496bd9ad33dbbab": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "c87ffeb8f6f54e1b871d129cd783de9f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "2789fbacce8f4cc8a240daa6c6d45d15": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "bfe2d8fcea404d22bbc61a69ae60c802": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "64ab952b23bd4406af5cc6d4f72b257e": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/jeshraghian/snntorch/blob/master/examples/legacy/tutorial_5_neuromorphic_datasets.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "47d5313e-c29d-4581-a9c7-a45122337069"
      },
      "source": [
        "[<img src='https://github.com/jeshraghian/snntorch/blob/master/docs/_static/img/snntorch_alpha_w.png?raw=true' width=\"300\">](https://github.com/jeshraghian/snntorch/) \n",
        "[<img src='https://github.com/neuromorphs/tonic/blob/develop/docs/_static/tonic-logo-white.png?raw=true' width=\"200\">](https://github.com/neuromorphs/tonic/)\n",
        "\n",
        "\n",
        "# Neuromorphic Datasets with Tonic + snnTorch\n",
        "## Tutorial 7\n",
        "### By Gregor Lenz (https://lenzgregor.com) and Jason K. Eshraghian (www.jasoneshraghian.com)\n",
        "\n",
        "<a href=\"https://colab.research.google.com/github/jeshraghian/snntorch/blob/master/examples/tutorial_7_tonic.ipynb\">\n",
        "  <img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/>\n",
        "</a>\n",
        "\n",
        "[<img src='https://github.com/jeshraghian/snntorch/blob/master/docs/_static/img/GitHub-Mark-Light-120px-plus.png?raw=true' width=\"28\">](https://github.com/jeshraghian/snntorch/) [<img src='https://github.com/jeshraghian/snntorch/blob/master/docs/_static/img/GitHub_Logo_White.png?raw=true' width=\"80\">](https://github.com/jeshraghian/snntorch/)"
      ],
      "id": "47d5313e-c29d-4581-a9c7-a45122337069"
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oll2NNFeG1NG"
      },
      "source": [
        "The snnTorch tutorial series is based on the following paper. If you find these resources or code useful in your work, please consider citing the following source:\n",
        "\n",
        "> <cite> [Jason K. Eshraghian, Max Ward, Emre Neftci, Xinxin Wang, Gregor Lenz, Girish Dwivedi, Mohammed Bennamoun, Doo Seok Jeong, and Wei D. Lu. \"Training Spiking Neural Networks Using Lessons From Deep Learning\". arXiv preprint arXiv:2109.12894, September 2021.](https://arxiv.org/abs/2109.12894) </cite>"
      ],
      "id": "oll2NNFeG1NG"
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ClgsZMOfBVby"
      },
      "source": [
        "# Introduction\n",
        "In this tutorial, you will:\n",
        "* Learn how to load neuromorphic datasets using [Tonic](https://github.com/neuromorphs/tonic)\n",
        "* Make use of caching to speed up dataloading\n",
        "* Train a CSNN with the [Neuromorphic-MNIST](https://tonic.readthedocs.io/en/latest/datasets.html#n-mnist) Dataset\n",
        "\n",
        "If running in Google Colab:\n",
        "* You may connect to GPU by checking `Runtime` > `Change runtime type` > `Hardware accelerator: GPU`\n",
        "* Next, install the latest PyPi distribution of snnTorch and Tonic by clicking into the following cell and pressing `Shift+Enter`."
      ],
      "id": "ClgsZMOfBVby"
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "hDnIEHOKB8LD",
        "outputId": "3d7a9981-9f06-4188-eba7-77b48ccb045d"
      },
      "source": [
        "!pip install tonic --quiet \n",
        "!pip install snntorch --quiet"
      ],
      "id": "hDnIEHOKB8LD",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\u001b[K     |████████████████████████████████| 92 kB 3.1 MB/s \n",
            "\u001b[K     |████████████████████████████████| 8.9 MB 26.5 MB/s \n",
            "\u001b[K     |████████████████████████████████| 395 kB 45.8 MB/s \n",
            "\u001b[?25h  Building wheel for importRosbag (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "  Building wheel for loris (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "\u001b[K     |████████████████████████████████| 59 kB 3.1 MB/s \n",
            "\u001b[?25h"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "e93694d9-0f0a-46a0-b17f-c04ac9b73a63"
      },
      "source": [
        "# 1. Using Tonic to Load Neuromorphic Datasets\n",
        "Loading datasets from neuromorphic sensors is made super simple thanks to [Tonic](https://github.com/neuromorphs/tonic), which works much like PyTorch vision.\n",
        "\n",
        "Let's start by loading the neuromorphic version of the MNIST dataset, called [N-MNIST](https://tonic.readthedocs.io/en/latest/reference/datasets.html#n-mnist). We can have a look at some raw events to get a feel for what we're working with."
      ],
      "id": "e93694d9-0f0a-46a0-b17f-c04ac9b73a63"
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 137,
          "referenced_widgets": [
            "9f46301d16924494ada03e7496af98ee",
            "397436bca741424c886e7f67805eebc3",
            "e965cc586d5f4d5aaf8c435ebd4bf35c",
            "be2f2e3ca1b34106874e6b5c8cd2051e",
            "b3a18813d8684b3ab7b9d944d8e74e4f",
            "37deac4746684f189a32858514a780a4",
            "83b65be63ec841288496bd9ad33dbbab",
            "c87ffeb8f6f54e1b871d129cd783de9f",
            "2789fbacce8f4cc8a240daa6c6d45d15",
            "bfe2d8fcea404d22bbc61a69ae60c802",
            "64ab952b23bd4406af5cc6d4f72b257e"
          ]
        },
        "id": "7d286ef9-5fe6-4578-a686-91559a1f81d2",
        "outputId": "f9438c1a-440f-4815-b4e6-101ba31e5cca"
      },
      "source": [
        "import tonic\n",
        "\n",
        "dataset = tonic.datasets.NMNIST(save_to='./data', train=True)\n",
        "events, target = dataset[0]\n",
        "print(events)"
      ],
      "id": "7d286ef9-5fe6-4578-a686-91559a1f81d2",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Downloading https://uca6892c4e08b631fef762aee80b.dl.dropboxusercontent.com/zip_download_get/A8yubn6iJIfzLC4NXQBrS1I7ATTQ14Bx1aKLTntxskbCo02s7rFtnwUSW2bHzvIbJVxXlmWSWs7kTHeWQty4Q8hQHssWjWM0UpkC79TENd9K1A?dl=1 to ./data/NMNIST/nmnist-archive.zip\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "9f46301d16924494ada03e7496af98ee",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "  0%|          | 0/1181572961 [00:00<?, ?it/s]"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Extracting ./data/NMNIST/nmnist-archive.zip to ./data/NMNIST\n",
            "[(10, 30,    937, 1) (33, 20,   1030, 1) (12, 27,   1052, 1) ...\n",
            " ( 7, 15, 302706, 1) (26, 11, 303852, 1) (11, 17, 305341, 1)]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IbnLy107Oo3a"
      },
      "source": [
        "Each row corresponds to a single event, which consists of four parameters: (*x-coordinate, y-coordinate, timestamp, polarity*).\n",
        "\n",
        "* x & y co-ordinates correspond to an address in a $34 \\times 34$ grid.\n",
        "\n",
        "* The timestamp of the event is recorded in microseconds.\n",
        "\n",
        "* The polarity refers to whether an on-spike (+1) or an off-spike (-1) occured; i.e., an increase in brightness or a decrease in brightness.\n",
        "\n",
        "If we were to accumulate those events over time and plot the bins as images, it looks like this:"
      ],
      "id": "IbnLy107Oo3a"
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 161
        },
        "id": "e6d6a0b0-2a73-4dbe-9576-d06c251f0fa4",
        "outputId": "665f0ad3-cdf8-4411-ffad-6f92b9e55c4d"
      },
      "source": [
        "tonic.utils.plot_event_grid(events)"
      ],
      "id": "e6d6a0b0-2a73-4dbe-9576-d06c251f0fa4",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 3 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "f6bcc031-d11a-4471-b3aa-335eec76d7ad"
      },
      "source": [
        "## 1.1 Transformations\n",
        "\n",
        "However, neural nets don't take lists of events as input. The raw data must be converted into a suitable representation, such as a tensor. We can choose a set of transforms to apply to our data before feeding it to our network. The neuromorphic camera sensor has a temporal resolution of microseconds, which when converted into a dense representation, ends up as a very large tensor. That is why we bin events into a smaller number of frames using the [ToFrame transformation](https://tonic.readthedocs.io/en/latest/reference/transformations.html#frames), which reduces temporal precision but also allows us to work with it in a dense format.\n",
        "\n",
        "* `time_window=1000` integrates events into 1000$~\\mu$s bins\n",
        "\n",
        "* Denoise removes isolated, one-off events. If no event occurs within a neighbourhood of 1 pixel across `filter_time` microseconds, the event is filtered. Smaller `filter_time` will filter more events."
      ],
      "id": "f6bcc031-d11a-4471-b3aa-335eec76d7ad"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "30f249be-8a65-4c1c-a21c-d561e904b4bf"
      },
      "source": [
        "import tonic.transforms as transforms\n",
        "\n",
        "sensor_size = tonic.datasets.NMNIST.sensor_size\n",
        "\n",
        "# Denoise removes isolated, one-off events\n",
        "# time_window\n",
        "frame_transform = transforms.Compose([transforms.Denoise(filter_time=10000), \n",
        "                                      transforms.ToFrame(sensor_size=sensor_size, \n",
        "                                                         time_window=1000)\n",
        "                                     ])\n",
        "\n",
        "trainset = tonic.datasets.NMNIST(save_to='./data', transform=frame_transform, train=True)\n",
        "testset = tonic.datasets.NMNIST(save_to='./data', transform=frame_transform, train=False)"
      ],
      "id": "30f249be-8a65-4c1c-a21c-d561e904b4bf",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "70be0b77-9405-44f6-af49-dfc4d49566c6"
      },
      "source": [
        "## 1.2 Fast Dataloading via Caching\n",
        "\n",
        "The original data is stored in a format that is slow to read. To speed up dataloading, we can make use of disk caching. That means that once files are loaded from the original file, they are written to disk in an efficient format in our cache directory. Let's compare some file reading speeds to read 100 examples."
      ],
      "id": "70be0b77-9405-44f6-af49-dfc4d49566c6"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3a6bf2a2-ff9f-4cdc-8cb3-02a1a9d71a11"
      },
      "source": [
        "def load_sample_simple():\n",
        "    for i in range(100):\n",
        "        events, target = trainset[i]"
      ],
      "id": "3a6bf2a2-ff9f-4cdc-8cb3-02a1a9d71a11",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "1a9d3b28-b303-4a17-be78-b9918911a7cd",
        "outputId": "47fb99f1-0685-460a-bfd3-5aca4bc069ed"
      },
      "source": [
        "%timeit -o load_sample_simple()"
      ],
      "id": "1a9d3b28-b303-4a17-be78-b9918911a7cd",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1 loop, best of 5: 2.76 s per loop\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<TimeitResult : 1 loop, best of 5: 2.76 s per loop>"
            ]
          },
          "metadata": {},
          "execution_count": 6
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "b957b32f-d76b-42c0-8c1c-b6b63e84e2ef"
      },
      "source": [
        "We can decrease the time it takes to read 100 samples by using a PyTorch DataLoader in addition to disk caching."
      ],
      "id": "b957b32f-d76b-42c0-8c1c-b6b63e84e2ef"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "f47e0798-5259-491a-9d3a-59b13b1b0983"
      },
      "source": [
        "from torch.utils.data import DataLoader\n",
        "from tonic import CachedDataset\n",
        "\n",
        "cached_trainset = CachedDataset(trainset, cache_path='./cache/nmnist/train')\n",
        "cached_dataloader = DataLoader(cached_trainset)\n",
        "\n",
        "def load_sample_cached():\n",
        "    for i, (events, target) in enumerate(iter(cached_dataloader)):\n",
        "        if i > 99: break"
      ],
      "id": "f47e0798-5259-491a-9d3a-59b13b1b0983",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "17a0219b-4d15-4f0b-b5be-8c728b5e24a9",
        "outputId": "fe8526e1-ffef-4190-a07c-0f62e1ba32fd"
      },
      "source": [
        "%timeit -o -r 20 load_sample_cached()"
      ],
      "id": "17a0219b-4d15-4f0b-b5be-8c728b5e24a9",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1 loop, best of 20: 1.8 s per loop\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<TimeitResult : 1 loop, best of 20: 1.8 s per loop>"
            ]
          },
          "metadata": {},
          "execution_count": 8
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3831428d-0511-4fde-84d9-11d08fa45df7"
      },
      "source": [
        "## 1.3 Even Faster DataLoading via Batching\n",
        "\n",
        "Now that we've reduced our loading time, we also want to use batching to make efficient use of the GPU. \n",
        "\n",
        "Because event recordings have different lengths, we are going to provide a  collation function `tonic.collation.PadTensors()` that will pad out shorter recordings to ensure all samples in a batch have the same dimensions. "
      ],
      "id": "3831428d-0511-4fde-84d9-11d08fa45df7"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5b35c7cd-d292-47cd-9203-7f31aa7f7207"
      },
      "source": [
        "batch_size = 100\n",
        "trainloader = DataLoader(cached_trainset, batch_size=batch_size, collate_fn=tonic.collation.PadTensors())"
      ],
      "id": "5b35c7cd-d292-47cd-9203-7f31aa7f7207",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "14b9af4f-141e-4301-8451-445957ec8707"
      },
      "source": [
        "def load_sample_batched():\n",
        "    events, target = next(iter(cached_dataloader))"
      ],
      "id": "14b9af4f-141e-4301-8451-445957ec8707",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "3dc4b27a-63ac-4edc-94e9-589d548c4769",
        "outputId": "e3a16676-9c5d-4c9e-e692-96bb4f8f5099"
      },
      "source": [
        "%timeit -o -r 10 load_sample_batched()"
      ],
      "id": "3dc4b27a-63ac-4edc-94e9-589d548c4769",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "100 loops, best of 10: 17.4 ms per loop\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<TimeitResult : 100 loops, best of 10: 17.4 ms per loop>"
            ]
          },
          "metadata": {},
          "execution_count": 11
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "a82a7afd-c011-4cd6-ba04-1e7cd438bc1f"
      },
      "source": [
        "By using disk caching and a PyTorch dataloader with multithreading and batching support, we have reduced loading times to less than a tenth per sample in comparison to naively iterating over the dataset!"
      ],
      "id": "a82a7afd-c011-4cd6-ba04-1e7cd438bc1f"
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "2ded1bd9-e2f1-479e-899c-c6c2652e6fc9"
      },
      "source": [
        "# 2. Training our network using frames created from events"
      ],
      "id": "2ded1bd9-e2f1-479e-899c-c6c2652e6fc9"
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9be82d75-69ef-4c1b-ad85-4eca84c73ccf"
      },
      "source": [
        "Now let's actually train a network on the N-MNIST classification task. We start by defining our caching wrappers and dataloaders. While doing that, we're also going to apply some augmentations to the training data. The samples we receive from the cached dataset are frames, so we can make use of PyTorch Vision to apply whatever random transform we would like."
      ],
      "id": "9be82d75-69ef-4c1b-ad85-4eca84c73ccf"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ace6cd0b-7b56-4422-b3bd-23bac65db9bd"
      },
      "source": [
        "import torch\n",
        "import torchvision\n",
        "\n",
        "transform = tonic.transforms.Compose([torch.from_numpy,\n",
        "                                      torchvision.transforms.RandomRotation([-10,10])])\n",
        "\n",
        "cached_trainset = CachedDataset(trainset, transform=transform, cache_path='./cache/nmnist/train')\n",
        "\n",
        "# no augmentations for the testset\n",
        "cached_testset = CachedDataset(testset, cache_path='./cache/nmnist/test')\n",
        "\n",
        "batch_size = 128\n",
        "trainloader = DataLoader(cached_trainset, batch_size=batch_size, collate_fn=tonic.collation.PadTensors(), shuffle=True)\n",
        "testloader = DataLoader(cached_testset, batch_size=batch_size, collate_fn=tonic.collation.PadTensors())"
      ],
      "id": "ace6cd0b-7b56-4422-b3bd-23bac65db9bd",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "528fe384-a365-4b53-bbfc-ed4dd261d222"
      },
      "source": [
        "A mini-batch now has the dimensions (time steps, batch size, channels, height, width). The number of time steps will be set to that of the longest recording in the mini-batch, and all other samples will be padded with zeros to match it."
      ],
      "id": "528fe384-a365-4b53-bbfc-ed4dd261d222"
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "c9e37337-ad4a-43d5-b429-81a18de5148e",
        "outputId": "88a6c0b0-aaaa-43ee-a62b-0eabcc90ebf0"
      },
      "source": [
        "event_tensor, target = next(iter(trainloader))\n",
        "print(event_tensor.shape)"
      ],
      "id": "c9e37337-ad4a-43d5-b429-81a18de5148e",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "torch.Size([311, 128, 2, 34, 34])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "61ae5d4b-2bb3-4191-9f96-04b3c6ba4c41"
      },
      "source": [
        "## 2.1 Defining our network\n",
        "We will use snnTorch + PyTorch to construct a CSNN, just as in the previous tutorial. The convolutional network architecture to be used is: 12C5-MP2-32C5-MP2-800FC10\n",
        "\n",
        "- 12C5 is a 5$\\times$5 convolutional kernel with 12 filters\n",
        "- MP2 is a 2$\\times$2 max-pooling function\n",
        "- 800FC10 is a fully-connected layer that maps 800 neurons to 10 outputs"
      ],
      "id": "61ae5d4b-2bb3-4191-9f96-04b3c6ba4c41"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "HpKDIkRKUIAB"
      },
      "source": [
        "import snntorch as snn\n",
        "from snntorch import surrogate\n",
        "from snntorch import functional as SF\n",
        "from snntorch import utils\n",
        "from snntorch import spikeplot as splt\n",
        "\n",
        "import torch\n",
        "import torch.nn as nn"
      ],
      "id": "HpKDIkRKUIAB",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "107cb645-0227-4290-9e1b-25d6ae7eac87"
      },
      "source": [
        "device = torch.device(\"cuda\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
        "\n",
        "# neuron and simulation parameters\n",
        "spike_grad = surrogate.fast_sigmoid(slope=75)\n",
        "beta = 0.5\n",
        "\n",
        "#  Initialize Network\n",
        "net = nn.Sequential(nn.Conv2d(2, 12, 5),\n",
        "                    nn.MaxPool2d(2),\n",
        "                    snn.Leaky(beta=beta, spike_grad=spike_grad, init_hidden=True),\n",
        "                    nn.Conv2d(12, 32, 5),\n",
        "                    nn.MaxPool2d(2),\n",
        "                    snn.Leaky(beta=beta, spike_grad=spike_grad, init_hidden=True),\n",
        "                    nn.Flatten(),\n",
        "                    nn.Linear(32*5*5, 10),\n",
        "                    snn.Leaky(beta=beta, spike_grad=spike_grad, init_hidden=True, output=True)\n",
        "                    ).to(device)"
      ],
      "id": "107cb645-0227-4290-9e1b-25d6ae7eac87",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zPFvlqOGi_uW"
      },
      "source": [
        "# this time, we won't return membrane as we don't need it \n",
        "\n",
        "def forward_pass(net, data):  \n",
        "  spk_rec = []\n",
        "  utils.reset(net)  # resets hidden states for all LIF neurons in net\n",
        "\n",
        "  for step in range(data.size(0)):  # data.size(0) = number of time steps\n",
        "      spk_out, mem_out = net(data[step])\n",
        "      spk_rec.append(spk_out)\n",
        "  \n",
        "  return torch.stack(spk_rec)"
      ],
      "id": "zPFvlqOGi_uW",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "23569dfc-e4a7-490f-8a68-c9ade5e03028"
      },
      "source": [
        "## 2.2 Training\n",
        "\n",
        "In the previous tutorial, Cross Entropy Loss was applied to the total spike count to maximize the number of spikes from the correct class.\n",
        "\n",
        "Another option from the `snn.functional` module is to specify the target number of spikes from correct and incorrect classes. The approach below uses the *Mean Square Error Spike Count Loss*, which aims to elicit spikes from the correct class 80\\% of the time, and 20\\% of the time from incorrect classes. Encouraging incorrect neurons to fire could be motivated to avoid dead neurons."
      ],
      "id": "23569dfc-e4a7-490f-8a68-c9ade5e03028"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "VocYbtD7Vwp7"
      },
      "source": [
        "optimizer = torch.optim.Adam(net.parameters(), lr=2e-2, betas=(0.9, 0.999))\n",
        "loss_fn = SF.mse_count_loss(correct_rate=0.8, incorrect_rate=0.2)"
      ],
      "id": "VocYbtD7Vwp7",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7xkKLsqnmzcw"
      },
      "source": [
        "Training neuromorphic data is expensive as it requires sequentially iterating through many time steps (approximately 300 time steps in the N-MNIST dataset). The following simulation will take some time, so we will just stick to training across 50 iterations (which is roughly 1/10th of a full epoch). Feel free to change `num_iters` if you have more time to kill. As we are printing results at each iteration, the results will be quite noisy and will also take some time before we start to see any sort of improvement.\n",
        "\n",
        "In our own experiments, it took about 20 iterations before we saw any improvement, and after 50 iterations, managed to crack ~60% accuracy. \n",
        "\n",
        "> Warning: the following simulation will take a while. Go make yourself a coffee, or ten. "
      ],
      "id": "7xkKLsqnmzcw"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "R4GbPSdTUcUR",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "76a3bfd8-7038-4e4d-d597-f864b92740a0"
      },
      "source": [
        "num_iters = 50\n",
        "\n",
        "loss_hist = []\n",
        "acc_hist = []\n",
        "\n",
        "# training loop\n",
        "for epoch in range(num_epochs):\n",
        "    for i, (data, targets) in enumerate(iter(trainloader)):\n",
        "        data = data.to(device)\n",
        "        targets = targets.to(device)\n",
        "\n",
        "        net.train()\n",
        "        spk_rec = forward_pass(net, data)\n",
        "        loss_val = loss_fn(spk_rec, targets)\n",
        "\n",
        "        # Gradient calculation + weight update\n",
        "        optimizer.zero_grad()\n",
        "        loss_val.backward()\n",
        "        optimizer.step()\n",
        "\n",
        "        # Store loss history for future plotting\n",
        "        loss_hist.append(loss_val.item())\n",
        " \n",
        "        print(f\"Epoch {epoch}, Iteration {i} \\nTrain Loss: {loss_val.item():.2f}\")\n",
        "\n",
        "        acc = SF.accuracy_rate(spk_rec, targets) \n",
        "        acc_hist.append(acc)\n",
        "        print(f\"Accuracy: {acc * 100:.2f}%\\n\")\n",
        "\n",
        "        if i == num_iters:\n",
        "          break"
      ],
      "id": "R4GbPSdTUcUR",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 0, Iteration 0 \n",
            "Train Loss: 30.96\n",
            "Accuracy: 5.47%\n",
            "\n",
            "Epoch 0, Iteration 1 \n",
            "Train Loss: 30.90\n",
            "Accuracy: 8.59%\n",
            "\n",
            "Epoch 0, Iteration 2 \n",
            "Train Loss: 30.90\n",
            "Accuracy: 9.38%\n",
            "\n",
            "Epoch 0, Iteration 3 \n",
            "Train Loss: 30.90\n",
            "Accuracy: 14.06%\n",
            "\n",
            "Epoch 0, Iteration 4 \n",
            "Train Loss: 31.00\n",
            "Accuracy: 6.25%\n",
            "\n",
            "Epoch 0, Iteration 5 \n",
            "Train Loss: 30.90\n",
            "Accuracy: 7.03%\n",
            "\n",
            "Epoch 0, Iteration 6 \n",
            "Train Loss: 30.90\n",
            "Accuracy: 6.25%\n",
            "\n",
            "Epoch 0, Iteration 7 \n",
            "Train Loss: 30.90\n",
            "Accuracy: 10.16%\n",
            "\n",
            "Epoch 0, Iteration 8 \n",
            "Train Loss: 30.90\n",
            "Accuracy: 14.84%\n",
            "\n",
            "Epoch 0, Iteration 9 \n",
            "Train Loss: 31.00\n",
            "Accuracy: 7.03%\n",
            "\n",
            "Epoch 0, Iteration 10 \n",
            "Train Loss: 30.90\n",
            "Accuracy: 10.16%\n",
            "\n",
            "Epoch 0, Iteration 11 \n",
            "Train Loss: 30.58\n",
            "Accuracy: 12.50%\n",
            "\n",
            "Epoch 0, Iteration 12 \n",
            "Train Loss: 29.67\n",
            "Accuracy: 5.47%\n",
            "\n",
            "Epoch 0, Iteration 13 \n",
            "Train Loss: 17.50\n",
            "Accuracy: 6.25%\n",
            "\n",
            "Epoch 0, Iteration 14 \n",
            "Train Loss: 13.11\n",
            "Accuracy: 12.50%\n",
            "\n",
            "Epoch 0, Iteration 15 \n",
            "Train Loss: 18.77\n",
            "Accuracy: 14.06%\n",
            "\n",
            "Epoch 0, Iteration 16 \n",
            "Train Loss: 19.44\n",
            "Accuracy: 16.41%\n",
            "\n",
            "Epoch 0, Iteration 17 \n",
            "Train Loss: 17.33\n",
            "Accuracy: 15.62%\n",
            "\n",
            "Epoch 0, Iteration 18 \n",
            "Train Loss: 13.39\n",
            "Accuracy: 10.16%\n",
            "\n",
            "Epoch 0, Iteration 19 \n",
            "Train Loss: 12.56\n",
            "Accuracy: 12.50%\n",
            "\n",
            "Epoch 0, Iteration 20 \n",
            "Train Loss: 14.20\n",
            "Accuracy: 18.75%\n",
            "\n",
            "Epoch 0, Iteration 21 \n",
            "Train Loss: 14.74\n",
            "Accuracy: 20.31%\n",
            "\n",
            "Epoch 0, Iteration 22 \n",
            "Train Loss: 11.32\n",
            "Accuracy: 24.22%\n",
            "\n",
            "Epoch 0, Iteration 23 \n",
            "Train Loss: 11.99\n",
            "Accuracy: 27.34%\n",
            "\n",
            "Epoch 0, Iteration 24 \n",
            "Train Loss: 12.59\n",
            "Accuracy: 39.06%\n",
            "\n",
            "Epoch 0, Iteration 25 \n",
            "Train Loss: 12.47\n",
            "Accuracy: 42.97%\n",
            "\n",
            "Epoch 0, Iteration 26 \n",
            "Train Loss: 10.73\n",
            "Accuracy: 42.19%\n",
            "\n",
            "Epoch 0, Iteration 27 \n",
            "Train Loss: 9.97\n",
            "Accuracy: 36.72%\n",
            "\n",
            "Epoch 0, Iteration 28 \n",
            "Train Loss: 11.09\n",
            "Accuracy: 32.03%\n",
            "\n",
            "Epoch 0, Iteration 29 \n",
            "Train Loss: 11.04\n",
            "Accuracy: 45.31%\n",
            "\n",
            "Epoch 0, Iteration 30 \n",
            "Train Loss: 10.03\n",
            "Accuracy: 50.78%\n",
            "\n",
            "Epoch 0, Iteration 31 \n",
            "Train Loss: 9.99\n",
            "Accuracy: 46.88%\n",
            "\n",
            "Epoch 0, Iteration 32 \n",
            "Train Loss: 9.43\n",
            "Accuracy: 51.56%\n",
            "\n",
            "Epoch 0, Iteration 33 \n",
            "Train Loss: 9.78\n",
            "Accuracy: 48.44%\n",
            "\n",
            "Epoch 0, Iteration 34 \n",
            "Train Loss: 9.56\n",
            "Accuracy: 53.91%\n",
            "\n",
            "Epoch 0, Iteration 35 \n",
            "Train Loss: 9.20\n",
            "Accuracy: 54.69%\n",
            "\n",
            "Epoch 0, Iteration 36 \n",
            "Train Loss: 9.02\n",
            "Accuracy: 50.78%\n",
            "\n",
            "Epoch 0, Iteration 37 \n",
            "Train Loss: 9.06\n",
            "Accuracy: 51.56%\n",
            "\n",
            "Epoch 0, Iteration 38 \n",
            "Train Loss: 8.93\n",
            "Accuracy: 57.81%\n",
            "\n",
            "Epoch 0, Iteration 39 \n",
            "Train Loss: 8.71\n",
            "Accuracy: 60.94%\n",
            "\n",
            "Epoch 0, Iteration 40 \n",
            "Train Loss: 8.68\n",
            "Accuracy: 53.12%\n",
            "\n",
            "Epoch 0, Iteration 41 \n",
            "Train Loss: 8.58\n",
            "Accuracy: 56.25%\n",
            "\n",
            "Epoch 0, Iteration 42 \n",
            "Train Loss: 8.17\n",
            "Accuracy: 64.84%\n",
            "\n",
            "Epoch 0, Iteration 43 \n",
            "Train Loss: 8.36\n",
            "Accuracy: 53.12%\n",
            "\n",
            "Epoch 0, Iteration 44 \n",
            "Train Loss: 7.77\n",
            "Accuracy: 58.59%\n",
            "\n",
            "Epoch 0, Iteration 45 \n",
            "Train Loss: 8.26\n",
            "Accuracy: 60.94%\n",
            "\n",
            "Epoch 0, Iteration 46 \n",
            "Train Loss: 7.71\n",
            "Accuracy: 68.75%\n",
            "\n",
            "Epoch 0, Iteration 47 \n",
            "Train Loss: 7.06\n",
            "Accuracy: 78.12%\n",
            "\n",
            "Epoch 0, Iteration 48 \n",
            "Train Loss: 7.97\n",
            "Accuracy: 61.72%\n",
            "\n",
            "Epoch 0, Iteration 49 \n",
            "Train Loss: 7.73\n",
            "Accuracy: 58.59%\n",
            "\n",
            "Epoch 0, Iteration 50 \n",
            "Train Loss: 7.49\n",
            "Accuracy: 65.62%\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YVjUzNcX0wld"
      },
      "source": [
        "# 3. Results\n",
        "## 3.1 Plot Test Accuracy"
      ],
      "id": "YVjUzNcX0wld"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "yp2aTX2_1zFG",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 295
        },
        "outputId": "9b85de65-dbae-4818-bfc9-776625498e1e"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "# Plot Loss\n",
        "fig = plt.figure(facecolor=\"w\")\n",
        "plt.plot(acc_hist)\n",
        "plt.title(\"Train Set Accuracy\")\n",
        "plt.xlabel(\"Iterationspk_rec, mem_rec = forward_pass(net, num_steps, data)\")\n",
        "plt.ylabel(\"Accuracy\")\n",
        "plt.show()"
      ],
      "id": "yp2aTX2_1zFG",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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Pvig3fakSZMG9PqEDCRKBETr9SURtLa2dnv8r4ng3LlzvY6LkMFCiYBovTfeeAOnT59GUFAQPv/8cyiVSrz66qsICQlBQEAANm3aBABITk7GlClTEBUVBX9/fwDAggULMH78eIjFYvXEYG+88QaampoQFBSE5cuXA/jz7YMxhldffRWjR4/GmDFjsHPnTvW1w8PDsWjRIvj6+mL58uWgIT5k0AzIsDRC7kHGxsaMsfajVRljbNOmTezdd99ljDEml8vZ+PHj2a1bt1hSUhIzMjJit27dUpe9M7KzsbGRicViVlFR0e7af73X7t272f33389aW1tZSUkJc3Z2ZkVFRSwpKYmZmZkxqVTKlEolCwsLY6dPn+bu4Qm5C70REPIXR44cwbZt2xAUFITQ0FBUVlYiKysLADBhwgSMGjVKXfarr75CYGAgwsLCIJVK1eW6cubMGSxduhR8Ph92dnaYNm0aLl68qL62k5MTdHR0EBQUhLy8PM6ekZC7acXso4T0BmMMX3/9NSIiItrtT05OhrGxcbvtY8eO4bfffoORkRHCw8Mhl8v7fF99fX3173w+v8d2CEIGCr0REK1namqqnukRACIiIvDtt9+ipaUFAJCZmYmGhoYO59XU1MDS0hJGRkbIyMjA+fPn1cd0dXXV599typQp2LlzJ5RKJcrLy3Hq1ClMmDCBg6ciRHP0RkC0XkBAAPh8PgIDA7FixQq8+OKLyMvLw7hx48AYg1AoxN69ezuc9//bu2MaAEIgCqIfFzggNJBQIYEWE4hBAQbQgi06NFxu55WLgEm2WFprWmspxqgQgmqt722MoZSSSinae795713nHOWc5ZzTnFPe+99/LoNv4/ooABjHaggAjCMEAGAcIQAA4wgBABhHCADAOEIAAMYRAgAw7gKS+UQuni37kQAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1gb1wCQb2bMd"
      },
      "source": [
        "## 3.2 Spike Counter\n",
        "\n",
        "Run a forward pass on a batch of data to obtain spike recordings."
      ],
      "id": "1gb1wCQb2bMd"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qLAfvj9D2AYd"
      },
      "source": [
        "spk_rec = forward_pass(net, data)"
      ],
      "id": "qLAfvj9D2AYd",
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "VQnj40YC2hUV"
      },
      "source": [
        "Changing `idx` allows you to index into various samples from the simulated minibatch. Use `splt.spike_count` to explore the spiking behaviour of a few different samples. Generating the following animation will take some time.\n",
        "\n",
        "> Note: if you are running the notebook locally on your desktop, please uncomment the line below and modify the path to your ffmpeg.exe\n",
        "\n"
      ],
      "id": "VQnj40YC2hUV"
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "oTKhuyk22M57",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 991
        },
        "outputId": "f6e0b621-0084-4fa2-d8a9-30644c0b7e65"
      },
      "source": [
        "from IPython.display import HTML\n",
        "\n",
        "idx = 0\n",
        "\n",
        "fig, ax = plt.subplots(facecolor='w', figsize=(12, 7))\n",
        "labels=['0', '1', '2', '3', '4', '5', '6', '7', '8','9']\n",
        "print(f\"The target label is: {targets[idx]}\")\n",
        "\n",
        "# plt.rcParams['animation.ffmpeg_path'] = 'C:\\\\path\\\\to\\\\your\\\\ffmpeg.exe'\n",
        "\n",
        "#  Plot spike count histogram\n",
        "anim = splt.spike_count(spk_rec[:, idx].detach().cpu(), fig, ax, labels=labels, \n",
        "                        animate=True, interpolate=1)\n",
        "\n",
        "HTML(anim.to_html5_video())\n",
        "# anim.save(\"spike_bar.mp4\")"
      ],
      "id": "oTKhuyk22M57",
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "The target label is: 3\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<video width=\"864\" height=\"504\" controls autoplay loop>\n",
              "  <source type=\"video/mp4\" src=\"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAACvgm1kYXQAAAKuBgX//6rcRem9\n",
              "5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTUyIHIyODU0IGU5YTU5MDMgLSBILjI2NC9NUEVHLTQg\n",
              "QVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE3IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcv\n",
              "eDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MSByZWY9MyBkZWJsb2NrPTE6MDowIGFuYWx5c2U9\n",
              "MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVm\n",
              "PTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6\n",
              "b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MyBsb29r\n",
              "YWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFj\n",
              "ZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJh\n",
              "bWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdl\n",
              "aWdodHA9MiBrZXlpbnQ9MjUwIGtleWludF9taW49MjUgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVz\n",
              "aD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBx\n",
              "cG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAA4TZYiE\n",
              "AC///vau/MsrRwuVLh1Ze7NR8uhJcv2IMH1oAAADAAADAAADAAEPmDjyj2JJkegAAAMAAnQAaoSh\n",
              "wr4HIoEyXk+UD+ecIrQavLhNEraTs5/98DoQD5nYFfuMS9cYrgHyrq7TC78AeSHRY6K6kd+d2GsJ\n",
              "QeKASAv+44iO5sSMRzUupHSMlaqYUv+Q+CMSzY3QezN8IWzVw6kX8nTjPb+deLEuCQvCNDjDuPVk\n",
              "f15U/mHad6e8zJpMJCir1DxK1iEflEatFEQqYJwT0Rs2zIRoGrH/cvBrWnYmq49da3jxg6K/OyqY\n",
              "BRCANfSnvFAwB8bNtCKpjuXZfKDctwRY4nTLZvjZp1QyWhg3njbRyubzHMCVtaBJcqRX4E8KGJyC\n",
              "Km5aeG2TNxQRXgt8vzGRmWhzT21hkszTwABNR5Cxu03Is1ogi1nPz1/wNsHqRgTMtU4BiCg9OVmy\n",
              "Yg6012biwp0yT2B8gF10fYmDPwgZfpKpt5WnL34R8Cqr8aKct4NbeJmIvW+J70zXQV0DzosKqv8j\n",
              "3juuiB38cI0nruoq7OTA7juUbL6eQP+iRB0+swEzZED/GXvXtw6YDhH+liDLCfx1snVTD5ZLMMBO\n",
              "iFoFdY3cg0IeQXZbX2dx48Dj3ahgMC8iM2mzjN6xQCsuAKbp+vCuwl5pqI2TiPRQ32mBo3hMqOe4\n",
              "SyJzJkS24IpbOMNHjA0bEzRS8laUaA/2UhXyQEIIGBcX1RlX43xHHWPw9EqQDQxXgIb0cSRNqdJQ\n",
              "msC5LiXkwYQNHC8b9VvhTiPuxPjXWk6CEMxwMCwXy+tr4ku57sgjJitD08T/RNX+8IAs62xbpa2E\n",
              "SN5SSB2dd36tkT7ja7g7gBkIX4rmHrE/ZJqYPIu5Uld8/Jn5ekQ5gqYyo+88dDdnch9CTOAJfc1Y\n",
              "6nmYjImuYnH5ShFmfLaBfqo+WWGy41QtjDC1u5vWRka9u0RyTJH/8sFRWNbVnwgJ1IAVjfxExoAC\n",
              "iNcCwlX1gEr7g4OSPQ85yVB8Xxl5lvpo1WIYRl6XAornT6W4MoMlVNnd0HqwSVHrdHJOZVZUehiY\n",
              "mPPzHETAfBocmO367UxC6hPxL2Pc9AcoATfVhJu01qnmeCeUBr/FNELHKwjORvY6ojk9+Kqkjxgb\n",
              "s3vD+idNf77yyRfMuy1lp2NfrhjRoWgOEXEBpU2B4ZYdlbd8+fktsq/sCEYE906clgHUfUYe0nsl\n",
              "iw1lEnZBJgCPpmUgNJhqWPjHPaweJdRb8nnD66UBymqS0Jk70wuW8Uw5TwAEQaCcLeo2r8tIJpvs\n",
              "NDe9YvQV/MEE3fTA9I0tk9kR2nvBrG0JJ/W3nykVku3aUQEMTxR2LAnEzXBnRe1HJdYGAiG4ecLv\n",
              "hvfhNknWO/e5b8N7S2fWJB+EXvKQjsSXXPWufdKygCOuBgO5oBwm6bfeW4cpNOXTHq/C+++80TcA\n",
              "ABCDmezb+sGYLd8u8EkrFuuIPobO0JAHzXzZtL9lpUquFcwRTndigce+zt4AkGkMZPoaK139/O9Q\n",
              "BcoovF1zGl13ylS63gAvKmHE4Pn/dV6kVOTd8Lb0uhoW8vgfjs0a6+bMwW2XOTtKOdQRyk+uJnLK\n",
              "u2a0eG4f0DK+XmsBclji0mkWPUnHACiq3eV6U2LcZLpSX285yu3hgLqM6EMrg7KKK/339c3EMqr1\n",
              "ixCfrmPIme841GO5bxp422oFBYiMqz+cx66zE7jyPr4gB7sHmS8bWqFB3ESLjp4khCTm2TJzobct\n",
              "qZkRa/5DZqlgG7CWpA460R3QyUO4e1Wmyx/TOSsWK1UJr6K1tnxjDOAxqrEp2c7VmKVdB1Om6guP\n",
              "XJqc8AGNJ9kf1f9cVv3f6+/GdKQehAAiUQIKgA4QlTWqqmXRwaxXrOXiZvNjL2IAM2KVr4M/vYSh\n",
              "WGuh7qWyKGrpr16NeZUCAHLp8iwuf2PC6KxhRizbwYBBTRkPzDG/GAhFY9piCOkhl4B8zNUUBGsK\n",
              "n5iRP5x7QS1lueRgY5zXOwl7eox/UiWsrfwW0pnWCLogABbN6/IMEXG8CTNkT0Fh9TRytTg9sbg2\n",
              "jzJm12CeX901pmI5TuaXY/OySpJD0wVe2LgNPXW/l2ZxQujk4nZHi4EErkRtcSalx95tidVp8rB7\n",
              "tPFqS4LgPgwwk3L6LXNt0Q3UyyneosQaU8IJKcacR+4tgrptEzEUwHtPSACQT95ROLDrl+Lcqamp\n",
              "vKMqgJqsKAtYS2rHUgLPoAC3gBFUBsTrd9RyEuYEeky1cvVr6h4Tz7umY32tGeXOIP8D/+Jl0x4A\n",
              "PBA9UeI4r1VyJ3JQ6sJv0nmeFg1r5JvIxVGQQlu//xvD+TofCWW41aM2DXXCqHySAxWnkkoU6ys6\n",
              "W7zsTq8G/Kx1McQKpUE1Bs4AAOhwC2AgBXYNwH5XXVRFo7lhgLcXKQYsOwkLAgYwg77ZKkxiHfbU\n",
              "s5aIa3j2X0fIjlbCLtzsJOPu2okMz78t9DjFQOlQgF6DnnvNdO3ez/1DnhoUUm+2MB79lV4dbJX9\n",
              "E87hsAisnYRSb38bzes+dVFhkIIOCunnXAAeBHWQ8YjxR2kYPWUTVCtkC4ifGGDccSgcXIDSceuY\n",
              "P22HuqCFfw/zcAx94jjsZajSJRWaPX4t37z9EWwhdxLzTQ8QtLF66Rq0pWkBuSsowP3+PoHzYwkt\n",
              "f3c/odx7mP00UvvrjzmZLRbov2g/eoy9bcDoE2WYLMY/7Gin3YOXQY3pIBmfpdE/EKKYaORD6URr\n",
              "y0QdXFn73Ri7Ye9A30c0IAm5i5fcIioRzO73y1rqGvN5U/KuVfGdSAb6fwyjBVCBB4LTyp+qonWW\n",
              "eSUooBJpA67fQ/sv+vQneNcERwJ3VQ9p1sJ/ejiT7Mig6uI6cV18pTGToa+JcC9cQ/aqpj6AYkod\n",
              "G/3u7CoJX3egir/F+xtwykNzoaAVKFChaxrdWrVG+zTb7asAYQ7E1Q/JQwlRNJiU+ShOuvCgADj6\n",
              "vo29LpZ0UGR2qY6r8QgZeFisvF3r85pHPxLo20S8n1XTvPgTihJsLsfrpab9RpOZownjZ4RmyHz1\n",
              "PcInLKxW/bJ2tgULXsT+u0psz1Vjpuoemi8Xuwrtag0TSGLzCv1yrWAIN7ZU8I8ocL++vzgJf+R+\n",
              "HJZEahYTbBVsfB30R1CDpk/zKk2FE8Uj5A1JHshaTSTrKPSDxqhVLQLa0x8PDPgFOaNjgrW4zFpa\n",
              "K+7G99cyOG8WqozW5tLf8CLV+mrcQv/2RQ7t0bC+YcC5q/sxStQbAvUEcdyjMSy2EHIZ1nqSZLQp\n",
              "ebHUNWmYgser6kx3rKax7edV8SwHlMPVsk+7/us1fzJT18NlcXSaDKRbyHXmkSc0YzT2tBxz0EmY\n",
              "fckAsddwrp4gZyCjVqwIgdwBavUVALonyZqQtmjaWfmnPSp6xaGfx6nDwd2jqqVu3gbyiNTtvoRB\n",
              "/pp9tYvvU0ZHRjMqZz6MLU/9neMdHGd+Joe4OdSQNOPWmKWbyKGqNeL0j+OaP5cd/8kOW1sFAUt0\n",
              "axwRpZeUvIFN+D90UP9Vzdh/iFk5WST13Ax+l4lYVl9nmR4NWDb7fTOwqmQqZY+CVORjy1s/KKjz\n",
              "cAZAFfkc7lxJluYA4yFwiBy3sAKPXjGqpW1k0l6zhZz+9iOcxSgj6YG+2OIOdffaJsj9yW8+cDTi\n",
              "gG/k6EcSE2wFSSHWfykloFmk+U5otvayQwr7SeEOEBXXGKugLCXdbHUiB0yCLTl/9VC5+Wf0jk1I\n",
              "WBbV4QCicWRIuqys/kuJZm/vM1jHjEm4oxCKww7cA0yqlciCBaIcf7LKH3H/ILaJpgPFpLWwtknM\n",
              "49dLJ55hiiwKp9UlQGV/Bf41w3XZxC3Grh3mlC+AhF5x9q4AHdld1L2SHGkpH8fwROzrFd2O3S/V\n",
              "lrfXVW4uggU5qFoJ5oBK4VFaTEHjuIKRkVdG2Bqj1SYGlI+GJ4+mlLQ7nf6izkl4HJEJyjjp2HKg\n",
              "rLNCZ1H+9nEXikAJXSH76rJS2sZM8ddO3OZkv+7LRk52/sbp80u9L7IcnwCSmbmbgwmp9SmXKHea\n",
              "YdWh8/ODyfUKK57RDj7UjeDznINE/lrRHIkvcWmiLbocoYjKSgIyrWSMT3qqAPit0Fo+dpPsDipa\n",
              "FOwpZeuJh8c8lczrxXsXKrEdk2vj+vbrn51cOOuWy7NWer5R6vty5rGGXmGof+foBktxMY5QHDvq\n",
              "pcPzyvVXpHPgABFCkMRBKzoL2j0fGB6f/wVN56eABqhzZBcHja6fg+UozgIxbvxLFVKqNGU7CuoQ\n",
              "FJPqBDxRRS7tP6Z1Bmza9pN7RAxLDmheWr53JdwKDKD16MX9Bga0ZCuIPbh4v7jaRokAZ6CW3L1g\n",
              "RykY6S3ibX7xteWQiuhdn4gau+XPIplrkHJNlJ2lursX62r/XLI+rt1I2nfyB/uwZdCDpWqQ+gfO\n",
              "wsh3y3VnTsRcoiW/TH0f2fIwONcxrgkSNcRf73w1/41Z1Ex5zqY4+lG1ax4/EnrVEAl06VP7GF1w\n",
              "0lkhBI6v7NLsL6uYBIbLgz66dnbVYZsLX58j8J1kfzEFLQIi3ihvpChJVG0eRPSsai51I0Ssbij1\n",
              "gwwneEUHbR3jrq065QoZfjxln07rIXfb6PCVXqwwGVNIuO/P+t1iMU/Nx+UA0uUsQ7eH9VhqNv13\n",
              "0MEwOgMLPBTES+EEETti+gH1jafte7cZzudt6SyJV0PpL9+hLPcuRWWKRl7XjDJYevD2tXO5p6iJ\n",
              "6E3rrHIbeRRybRXKr0EbD+owpYre9Km1PKo2h3Ris1eLYSAKuJQnOROUlzkaxX9Xf6fzBoANX8MT\n",
              "MKAK/N5B0BlRAAADFEGaImxCv/44QAGHpn0EktMf9fMkFSnI5F5j17wPYg7+H3C1+CGDiakB/tkj\n",
              "7+19wMVP+nFcw9UKdtSp28DgEqFGW43VZnBefXM9+ohq817MAMH9BXljhyyuvw5046pIlnGEGALQ\n",
              "Df1Gn+8KOfp21+mkHHkyNXBq/QsZxCGLZptvFI7UXBFXblpEJcQ6KNBAAi/ts6p36hZj4HPJAIpB\n",
              "swpwNp8X5PCYDL5kpyWZWKsPvHm5nydObbwjWsIZoCESD/KVfWMsRvkTcKM5Vo2IbavF0S+4hobK\n",
              "1uvvXlPqcK/RSHjD3o44iN+g9MHnV1BxDUsfndEVWkFei3mIqCaVRCj+N57x7gIkKCFU8AKc1Afm\n",
              "YSItGOZBjj36FZsx4NvivpCkHbafqRzMIN02BiBJxSoACe/7hv86SNhE9gj7E7Hk78N0m7z1kw+V\n",
              "2rsvWPNRTxRhfodZ5GGdIWRI+lckstrKChyvSCx3nIp98gZWphSFbomAwj4/UGLYwByaxZ8V99Tb\n",
              "UHHaCthY3nuEdABixflkJAi7e7huCXTCqOv8Y57hVruJdCQWPHKd9kJhqRNUwsmXTzz0K/jy9UEL\n",
              "h+Wp2QbFhZ427LWSId4Tiqe5wUVSSOQZmQlO13/x1Uybtca3isODpP+oQihpSiFA7NET3eP1IhnM\n",
              "8xD5w9LrW1fdTxQfXEkxA9zXbnyWp2gWaI8qZc42deXwtB6XmoBXoCbD6Npg8j7hN9UazRMza70c\n",
              "Jn5Bgw8bpthuyJBymChhTv2iZ7w2fe7sDlW0No1ldSi1fJS3C1iQ3vN9NB0+P2nhReKI5f0eSNuV\n",
              "1ODI77moMWq/slNbm2GFN3fpxPMgwcSYtrOxPahnFsS4SPcjk7npJpOqusU74vRhLVLh/R+jumU4\n",
              "DyxxHbwnfnROvHG27tIGeu4aPn6SdipuBMJ2b7OtZQ74ZqxU3It3o7SdZIpotzBaE3MrnttCVNKd\n",
              "KA273Gjoei/mDCOuNhiY76436LjiIQ0UwUsxma+3BFrTSaegPWlBDzJb9pzV7d1Awo6C0cE0Mn23\n",
              "pBYwAAABTwGeQXkI/wAfwTUgAcaTv+5x2Ru4PaHYt0po0j9R6+pb6Ol5metu8fIslBKhbLO4C001\n",
              "iBTg2pjZaNGWD2MKu2Z9d/KpLigXUdylgmIK+gwhsdoQh1af+UkW44Sr6RhrRbCwl3nvz5F8Xq1p\n",
              "VvXGSoYAyNBFeck5l/kaVrK2GHW/lG/rsu7KOowWyIcflgGwqCwb1CHUy5xhSINkTWlFzE+0Rwmz\n",
              "c8vL86rK9433E2c5rAbS6knw+P1HiT6XtJaO5LSWDsfHamKBKmvUuYoWMJtF5hccrlEffNHcYOCv\n",
              "e+WHyiEsBmKI97/lR42zcpDPKjzUySE5X1DFMZs0cr/MdAaFrENFMmlcewt8kRUBtLaS0gMI0TJq\n",
              "SORK5GLxX3mkBc45biXaE7bOqntZUGim9tr5ApxZ8TuFL4CEYFsFoQ5Tbw3v+dsbfKPnBZ1VbUEv\n",
              "AAACt0GaQzwhkymEK//+OEABidVcCLQhOL1b//f8CFhB+PvSPjdAzkVDOmJ6xpzY5ivA2FTrB031\n",
              "NGmpRn55Spultbblj6GJINq6c5hJ3wi1sk+XrSgobz3ICLfSMDoDGMbNOv2dspN3FszZMGOtKkdu\n",
              "MgWaULNd2xozOOsyzD8K6uO6qsvHCxwa2QRjmHjEfp7Viu6owk1BSVxxkpZDVTVRwDpkiL+ClFQM\n",
              "3yaPXSmbmyhAYV/J8z1VclPFGUi4jeM550vsWt24xtfqLfxXTRkKj/ig/BF9rAjHoZNHpUFbRPN8\n",
              "LcOnxLj5Z1JD1zM3gWlCZPwh4BdiGrUIzFBrtz0MMhHaKB0u374RsSOuPXcMJiHVuTnYdnpZtGK0\n",
              "8EsnZ6tpP++feNX1dQUMl0h78DcKyDT+BOBkagFZfHxRwViodtXWnnjxxvmToYw4seNmx6Yh1Veb\n",
              "i6le8KmwtxMDFMN6jYkI+4lMXAr5kKY3M6i54/t4vvuHVWSlYhpNMt9Fx4QM+nrGuGrb7fmTSNby\n",
              "s9pWiXe9N1Al+zKAfKZVITtpdrJwXyZDEBtJYoFGpMvBFjXQKEMB6sj7U9NXu8oSIcMtc/ScU0Ku\n",
              "+52JotRW9TNofgKZmsXxYJT4T3bLkzXCO6AhthGGhL1XNjGpBofR66hyy5vFytlv2phwS0qJtqWh\n",
              "d07CcbVgQtRmhxGD0UPfMv6eRbNeTytxiGcwpTzRkdmIZztvsYYeWDeGvaqAUBCdwlkN7P+RsDN/\n",
              "6ihgTT5tM5OWqZZxW4gm752kauKlfAS93FaJb64VqaDcTjafc6cBT08SFINRxDkU5VPpfcygoPjc\n",
              "ql4dYdkLzc7e9JGv1U6ZhM6YuOvrqY7JuifMzDzIZplrtc6yQn638HT18SQG3AUs5GDfl54c/Dde\n",
              "JbrCGWINIJkf0SqBKkEmAAAA/0GaZEnhDyZTAhf//oywAGK//dTwBOBbfkPh4wWcy3B9FITpafHd\n",
              "/PAoKabJdMCXgW8/Q1r3yYEA4vW3wUvYvT+harc00uWHyxLJa12hHHN8AegTO645L9TUlVa6UZo2\n",
              "E5TPeZqYYHhDC2P5Wh4KC08kvHr46ke1Q6mABR0xlnvwwb1M4QYp+QBy+CU8z37m9uiNtnyhtaq5\n",
              "Q9jF2Z/7h6CMMBGbIR557QHCultddoIBVWzQQzoy8YKrxpSITMsk0ddyrSj7qEPkVXZXtSLpmzrI\n",
              "uvTUGy9e+b0xSuePYnggNvwzUI3CDILZzqvyQaFKoEJ4duIDljEq8IG6+vbtgQAAANBBmoVJ4Q8m\n",
              "UwIX//6MsABiluN2ADSe+YAdSWZ6vV+H3ZkJcbX+G23D6MkHd+Oohj4RLS3hMoC3uunhCE6V47ti\n",
              "0885ithl0+AckfFPZZAZ3cxuLcdZZUvXxUNZh6Fv3QZm1GIPvQzMeBj+KOqfindUgWfykmVPLFsq\n",
              "gLc4w/+pVZ/SkMNJ0uhVp1CpR8+ZXwcOvVFbQh8yXyaMrGoOaUH6a9Qhpm+Nz2xtNtSWQ6R52yd/\n",
              "SUuGlauk1OMixzeLmW8ennyqVqqmPm5xSlDdau7hAAAA20GapknhDyZTAhf//oywAGKW4Yvw++ea\n",
              "AegAdj/XvRXOyvqoKxtPA5M/ylKj5OPYjLBnUhCg1MamEYTALHvMQn/TPiat/cvtXL7jk8b+cFgl\n",
              "lJjQ7vSH23tvz68e1saupWcOzIahp97AY52VJOBlGxVBrTe2QkSBTx7xIaMrBjST2GZXEzHZana/\n",
              "a+9lxwc9gcUyfRFD+ZI8AYhrLeeGcmK/n/YgAB7K2KVfGUuOly13mZEDB0yWsuCCIrXu3wkUIq5t\n",
              "fGmmvpTUa4YLSBz7wdnb/2OXCON1j8wNUwAAAKZBmsdJ4Q8mUwIX//6MsABiluGMANeFmUeDPTpa\n",
              "DIieAIRmDDrQUg1HYCOh1Wmz8YhvfxJX6pgv7n7BARD9P4lCO74iasUSPCXcWZPEgPTX9ZX8GNsw\n",
              "XgZQTYfd4OiQ/5x57hSLYkQq7u5X/cEm7jFFGfCdFd+GcmE+FrL/2BXPrzGtoNGTYleuIpCtgnDp\n",
              "oMUGFTBGU4oTiXDDXb4gOmHcxdg0JO6BAAAAkUGa6EnhDyZTAhn//p4QAGHYGWhz6cwAAzBfW8v+\n",
              "+kwLkm3ULm9/KxXeMkPg95Cf37hKinNaeC4CQPSxjLHxAz0FG2O0hvuSibdD8woJCr79t7HEAxmI\n",
              "ZQ/N2lKyD0HwqXyiq8KY+AxOhx7VOO+c+PvkPitL9VTfqDczyj41p6uYCftUnFfvMfONzzRVG1XX\n",
              "/r4AAAJBQZsMSeEPJlMCGf/+nhAAYnhOdqrXACMhg7sSAk1QUiPk0CJxfS8wajfWOVs5d4ZgRUbQ\n",
              "tHlLzv9ftEDL7B/RArHuU54NMuumS8lKATdsOyJSsmcUGoY5ZXiqFxXcDizekmfPd6/VPrrFn0Eo\n",
              "ZNyjRCGQxAS/40KK1cC7joU78Grp9ZjOFkrzM3HJi8DlU1n/YfcsetdDmOyZ9za4X13DQnrDgPsU\n",
              "F4GD08PMMoIZbWxlsAp7ebXBKgdvTEykM5+r3SmI6OBGpU1E/RTGsWPKm0CnWxsD1Q2WCVHfMU5i\n",
              "F3xWE/jshtyzDRtv2QbJjb7UFshzqM6FZ2iOYtRdgJQ/5jgUPLTt9kBCgztVxHDNRiv3u36WB0f+\n",
              "iQXxgjiQ/Pmz1bKbmffShMASKKMrd8FZOcivqwNck8L9tK2Ebzke97HfVBQRf1RSQ0WxLzHg7pQm\n",
              "zs6h5uy31Pd1H5g21TIlZq/tPf08EG5QaRseQohYla+Kd5ni694l1GJ4q9dC3vua8HFuVsSdxFV8\n",
              "zJko33IOkmQ0uMs4Wwjw4Gk2PTD10iB+sWUF3TVHoCDpNhXEhty6WkI55R6fxOg6v1G8//g1oxxX\n",
              "lxEg7RptfGKlSln069wRV2pWqaimaLv1SA+qYUiUB5+okj1RHTIl7cSc9KufwWf4mnXvh/PHrOOj\n",
              "Y6XXmN8Ut3sQtyfh0t4RcZTv6ZuYtZHPFJxgxQWbBWGvMwysCUPqhCJuJynUTpUDgFI8RAFfUSCj\n",
              "ob9Cu+koMLA45T2ZYAAAAIdBnypFETwn/wAaYS73Xxi/+JcLOEy15BMLthII0w1SjqAEuSSiau9e\n",
              "1wmOx7sUj9MnZB4ej+yzn4OQV7IZ7AzxWePEFU1V725VLL4dC3aQVL/afiPUfjRz8W7/tTwceCEf\n",
              "v33UWk2JuawcbWs02KPKqvcMhYbDnu0WpK/cL9dbYF3RK9EhWjkAAAB/AZ9JdEI/AB8Kq8gACAnj\n",
              "mED1eWSdPVC1U+fg9jDozYCUxtQgIFUUmwXAxI8ClgccvCDCnxzaeMCFz3xEzL1XTvyDuxtMK5XP\n",
              "AdH6EjCJSIM2N/j++AtJk6RSSKeO6pgtTIRbDm6kftUT9XoWcp9ZoRMGpznF7KdbFAEI5Al0+AAA\n",
              "AFABn0tqQj8AHmc2PuI/XJsPSFiFqg+fjA/9nbnUOQ6S4OAvmT3MyeXXng3/bmDBf1ct9XHerEhs\n",
              "M7KAP9EJKK1E7oDCfsIgBW//HiUm4eQkYAAAAKNBm09JqEFomUwIX//+jLAAYBY1WKAkejpkqH//\n",
              "Pm5iWKeDENre/rpQfFW4w0LkuXkhP8bNtNQY5NmhaBARiW9E0xMPn+IuQS079jWzJYGDx1Nemqwq\n",
              "IJBF599cfaewQmgH83OaY+Tu3HnaD+9oK8Fhlypc/UKEiRhMCp3KY2EWHnGUxowe0qQCoW/aFSQL\n",
              "uv2dwPyvr3rGDCZZvHZoQfrj0NAxAAAAUkGfbUURLCf/ABm/INuBDE6k+JUPBxDl1WkF9QMQQ980\n",
              "ZOhVlG7962VMc/BaK2zEm9WpVtPMoxGaW5zA4Ksa3lOC+WSKW78pK81HBiwLukYAK2EAAAA/AZ+O\n",
              "akI/AB5c9gfFJEJFt1u0xaiYS9H1bRL3sUg9CDcjuhGrrwJgO+atmIrlFNFaVPNcXZzluB9tSS9K\n",
              "Rwl3AAAA+0GbkUmoQWyZTBRML//+jLAAYLhOe5zSoBJrTEwAg3ewjohyYHB2JZ4JGxKvN2RLLpfu\n",
              "tNhF7x1k60Bv8eUC6ykqe+fr/6Hz+MGm4fAFXNagjT3fMP+lu48bklNCnY6nAgermmv8RU7kEiJv\n",
              "C+dwcQITifO3gXhEQZT7UgurIIbAPV9Nb34obIWdHkor6z1L77aUT+fQc/Pu90YNYNd62b0phcd7\n",
              "GfVu/7C/NRugeU4awNHIwcmy21IuOo4NH1oXFMzMmojOxURA9XF3JV99kBbq9TKs1avAKYuiFiLJ\n",
              "ZrVGoUj3kADL5ASpHK6I1ueXfMJIzdww07t+gO6AAAAAVwGfsGpCPwAeZzYmQTbsa24rmQISlcjp\n",
              "VhmDLh6IcqcLEcjT/A9XvAynR5FmKuIFNo6aRz1bF9mQWHbEuLqr9yTt4Z5mL+ILHADXHmtKVAHr\n",
              "FmpgGkBQQAAAASlBm7NJ4QpSZTBSwv/+jLAAXan9YvzIXADXsrUrxHCw+z8wYKxl3rVO25BqEund\n",
              "yJwiVVhtIuLz+F4HiZx+TEAz27ggbj8LGyStZx7iuJlPGSU29OPIULKMxrfDt+4LJv/GHFPK1Ty9\n",
              "a6W9UFzTEdxFmZ2nf2oiY3uDHLtdodMxVfhFVqAlrs9+eaAGBs5ZpK87Yo4bFws+GQY7BtCrodKt\n",
              "RWwCSc+M3hjtlll9L2h0aDSIq6FOsWN62QNWLURNTT0+1dWivatp2my2MtWNe0xI4MQxvWTSUjFo\n",
              "0Y9+bn/1BZvpqigF6gYuQ6PUnQuw4efDf9ETjHW20+j9sBUvXz8ifMGSFyYPlp5/PxyMkTKpFthv\n",
              "VWxV0e9Adly3yAQArjuEiRWMMIAgtoEAAABHAZ/SakI/AB2s9hceN7y7kLQ3yDLwUGicWkyv9bND\n",
              "ggnZoNFQFJZsiXtMb3GCragfCvhpS1RTb3OiFbHzro12p/R8xsrAg4AAAAFdQZvWSeEOiZTAhX/+\n",
              "OEABaoyAvRakVgJ3/cZP9dsN1GNKp+gZLLWdMTc6nS/ajoV7z8HVWnrF4DKihK5yJC925vU2fabZ\n",
              "uaS2iQ3Ge/6vyay+q9RIOZPq67P7Lx68HMDt/3tdWHocBDHNvVE88QUw5JOgks92Ua64VDPkBidr\n",
              "sF6al8OWcZCv5K3gsZjezbpXjqkGYQrVVSqHA0/VSLM+gv6eHF1qoCMMxH8e1D89B77kF9kL0GO4\n",
              "zwi73MnCWHVDFO+TYi1PqerHIm5mC3/+bWKE188z7cYRufoicNh9oL+GE/7gfl4svstJDPgRhce4\n",
              "x9FjEmHxO3zkmndk+IIhX1ANUoD8B2xwtwboZdnGZr0Lyj6GMQvaIn+YaE7F9/x4QUB2oVcsuGZ2\n",
              "ft3k9Eta9uUDlGlnuUeDLyi1cSGlZqjy/XJXKA5GqOGFYETCvwFpOfIvbe3kPssOJnD5jwAAAGRB\n",
              "n/RFFTwn/wAZHyDgcELCFQDG+zAC1omr3aydbmbVgXStLER+LyHMGzepdwbnsQNBGao9b7XgNPk8\n",
              "KwV10DHubGhl1S+aVOd1jkI17w7gwIeNBJf/lRfE8rZjGzh4wNiDxY7pAAAAUAGeFWpCPwAdrPYW\n",
              "eOUppMbS0CiNOr4YWNp4BVUPV9gXkVviue08eL68E/l+xDspeHo+RkQciaaurJ0seE8aBOGdcr7G\n",
              "Pi1N6VRo8QU3bf+AAAAA+EGaF0moQWiZTAhX//44QAFqiVFMARSorJBOMIS/w8KQQPAm7texq1Bp\n",
              "ckxENcFATl0ptNefnoqa7Zb72uDhgNRHmKhb0s8Ob/5KB7WdB4XrqS7apkl48ZB6wgjviZlqJNwh\n",
              "l0qgxPzXa2wiIK2CFB4LYSEvbQEEQNll/T2osxcRBdar8Agc9GbGvPdqItZhQECgXHud5e7UACES\n",
              "g18ZWQuOlPNx9zCZsKIJAy0635E7xkO5YEG85CEf7kl967eYejedI4Nh1ppnbKYdUmxjgJz4jMHg\n",
              "ttH/c+qYG1lKvNF1t7IJ9qv+Cd1bfCs5DPCMalkVUAP9RgFJAAAAlUGaOEnhClJlMCF//oywAF2q\n",
              "4QU81fH5Kks8nCRQeAgjljMbFqJQwM0PGSeXb++b95dzLraQY347Eu9yEU6NYt+LhrB2FRIRf5P4\n",
              "kv/OvsOfL4SViZA9atdB17qx0JzzQIxh6xdK8O5cD2KCx/8drGStVenHLMTtGyDOq1CXv6TEvEzO\n",
              "nnm1gq5xB448aHwo26a12FLBAAAAZUGaWUnhDomUwIX//oywAF3CurY+ymBW4up31TfkHphyVfPc\n",
              "hluhTQgbroerjq38UyZGPCg5WO42572CbjE75jm1KThXZcmXXtnxPHp02EN+kEjV2fshZ1agOdb0\n",
              "nRCVn1DlACbgAAAAZ0GaeknhDyZTAhf//oywAFtq4Y34ze0+lw1IrYAj11uz1J9VIPzD9GAUk9bt\n",
              "Smffxyt8+krvmBRn0CVbQsQGjMCUS/Y8A2Hbt1peObibVDG3JRiUSNQdbSuzrWa1PqkH7oBRPq8G\n",
              "lHkAAAC+QZqcSeEPJlMFETwv//6MsABbaf1i/Gyp9YBEwMxuAFEFZ6G/dHsAwXOG/eZ/FtSeY8K5\n",
              "mL8TgkFURgeTp2m8jeP6OuPqRn4ffGMy4O75J3qSCAv/jYTJYwPRNs9zugVbWIX3tOoGFDvO/v+r\n",
              "F+tC7eiHRGu4YeXQ8/zZ4ptdkNhWiUkZHTRpiELx1LSQ8hBGTZ7oS6rCeDIe/CxzQaJIHcS3Gaqf\n",
              "8pd5MGqDNfK0xvIh/MbjA3t//n2qxAvuXQAAAEgBnrtqQj8AHPz2Fx6xIpR0qvX27SenahLRl2J5\n",
              "I1I3259Gz36gSWM43lOEOP6ud5uiSPCKHUnFKDLoZpIcE2+zMLfeihz9BW0AAABkQZq9SeEPJlMC\n",
              "F//+jLAAW2rhjfjN6nXA6hHsS79Jcc9mITRDTvIGfrbNtLXTWoEmDvBTbbW/rOte2R9Lj9+Dbw+G\n",
              "zCcjKdPf+f2pM98imiArPIdt/eZUAb+jLqXqJBlP6QDBgQAAANpBmt9J4Q8mUwURPDP//p4QAFqr\n",
              "ez4gBnMulxqjZQOAnNr9nf8RUuDoa5EHkHdOk310VsBNwYIPd1tt5rOhVXTQ93A7xjmKr8uWuTbs\n",
              "XFZZ6FRik5D3yGYq3JbPoOJi8Q33j+VyvbLPUrh5KYbZy+qWi9GEQnV3rD3zIgvQl1uK1ZWNuO8f\n",
              "p9TSMDaSy7NwG3nFYBUX6To0voE0C0J+8hkcBsgkNgR5JPzXjeeAYA+m3AUQvi6clN7b9FRiwqG6\n",
              "+wHJ7ldCmILV576eU9G4orz2/0WuCJp+KXhQfAAAAFgBnv5qQj8AHPz1wXT89YvzTUS26pKl86fw\n",
              "YVzZUz+nVz7VaHQhkRca6KaVbXVwomH3IPmicKQyCFsx94IATbyQJSctbr7iJe/jDVqbUI8QKjT/\n",
              "rstX6RkrAAAAl0Ga4UnhDyZTBTwz//6eEABbOZc6ziQRGDo8RQAgYabpiLnDO5iBUZQmMHRaOkOw\n",
              "tDcy6+yqdAi6lOhc389PBxaJa8d077lqovDEkv/W2GRX8jh5oS/u70bCMtzE739iAJGonu97oSfx\n",
              "zY0PoMGTIQeTI8lDLFokLCFtYE+58XCOuKJDJIibhi2hao6C6QJOqHurIOn9B1UAAABOAZ8AakI/\n",
              "ABz/4/1YieG9OU76YcpgYcW06LXNLD34Cx6BReFo8UDKXVxonSONZRMK25CPzn9o48FV3ps3irjq\n",
              "Zqm+p7BWVDWR66qv1A6oAAAArkGbBEnhDyZTAhn//p4QAFhrob4gB+CRvP37Bzb784YltEhJiN19\n",
              "3sbH+7QfjLKf5p6Ju4JM5Xdam4Pxht+G1z1qgCVMKgEXEMS9Q+V9fMJTjaXJ6C67zRix0M+GH+vg\n",
              "zzW0abrDDwciP3beOa+IY/as9OKIMn8X5PoDiz/F4sTiFP+NhADkcn7Zj/g29hmn83/ok8fmDxOi\n",
              "Ovi4K5EIvDLvKQQj6n0LCh+ldxh1QQAAAFFBnyJFETwn/wAX5p9+wdpGJt7p7uYXVdNQukIuRE6C\n",
              "TnOOGEDXwVj1tZuix5QuQa5k1y7swZIDGsIRDS0zFYom7Uf3dwgIIrqIfn5S1uNgc0AAAABFAZ9D\n",
              "akI/ABxXNkqc3IyXcVC3I9rNsIn3sPAZpEtGgVDxA5b8kzsFB+33+EULTgn/gFTynjb6EHysL3CO\n",
              "0eMnotxmygGpAAAAhEGbR0moQWiZTAhf//6MsABZKjVEmqRcdt7dwhiGFglXSQ1nuKecOtyF5SQh\n",
              "FBdBAJuTceucrNmOBO3/T7shSEFwA4k4fCAWhcvVUjLLoKcAG3IC6GpPfp70W23EWns+9BubWa0w\n",
              "iO9tvcmfyx9O1ok+BDcVdXO51gcvZOjLk2ACpRgifwAAAFZBn2VFESwn/wAX3yDNMECTsb5SuGKr\n",
              "ZVJIkXDmJE/viQGRMPtnw006Sp2yyllH1Fmj7PzMXFxTExP9TJsGIGYeM/k8xMRkaC40BeT1zVcV\n",
              "oTDQzoPh3QAAAEYBn4ZqQj8AHEz1wXUIfu/gLOU4IBiRWIGhombdW1dl/stPjmNmQwITNrfuyNcH\n",
              "UaARXMG2tZ4eQrFydhYdpIyLjZTp0BqxAAAAiUGbiUmoQWyZTBRML//+jLAAWbmXHmjt/dZagQzX\n",
              "35PknwpsNrzZDwb++u8VVKGN029HbREYF7kzZefu/Q/6zgTFrT5bHubv0SimSmKAfaofRU4NTfd6\n",
              "hebFuH+Fy09UKi8XRNuIovP+bzFEpgbNqEJBRomdHfWRFv6n0JP1c9oAVbOpG87eoyxQAAAASQGf\n",
              "qGpCPwAcT+P9WK0vIf+Q9SLMcHUEwwO2YcKHNVomF8ivQ1wLCKWTmUqisOQ8Px9s9bpa9wK8+Ijv\n",
              "H1s+OxwKN5t88D4hd8sAAAB8QZutSeEKUmUwIV/+OEABT42vFMANAcM7pqLsaARsvEMN1qakFfpK\n",
              "plyyaZVGhp1KkXNOspTWvXB+GNAnpeb3eucCLgrhtrWD4juIYilqeroplyTqRVk9cMRzmy+nl+1n\n",
              "AF3Oxn0Q9vbPKIrHxne0EmDUZhoqc32RN/BqwQAAAFRBn8tFNEwn/wAXREjgwaI0n27Nsmih7Gdu\n",
              "Huciyo6v79J/r/gKOKiE9KJDZNBHG+0r6i1wF2ds2FO63QtYvqW95X3jZGmFVXEs3bHG4EhPNjHt\n",
              "QpIAAABBAZ/qdEI/ABupxwwAtFQx4pJjfbXMY5QCsHdX+zFb1Ap2hGQn0ASFeDEPPlsx/Ekfv4pl\n",
              "ZOyvQr+6vG/kQvCPA6YAAABCAZ/sakI/ABuf31SZm291RPlgqYnFKFvfvdaGEbAsmYhUKA5TQQhK\n",
              "l7EFFLRpEfvrC7Gaqo4X+6RujXjaElmcY0EDAAAAaUGb7kmoQWiZTAhX//44QAFPkCQegvKeNBzB\n",
              "VaTT88sHALQBMBnnsjLkh9EmZATZ7ZfRRKZWWoxykhQw5c4o2fKnYOFfF5gJTIEmpBqwwW8vksWK\n",
              "xbaUJ5Fj94pEF0dzwG4B0CTpP4hJLQAAAFdBmg9J4QpSZTAhX/44QAFR5PrRGhjc0JlojcuXLGlY\n",
              "8IMuWC0hd1DWH1yeVmdeUyg+Ai2cboxC7By3WI0r3yQSvWuEgh6iox3n1rXOCaX/th6cA4T4FfEA\n",
              "AABXQZowSeEOiZTAhX/+OEABR1IoH8nE4YJScWaU2WfGAAcHDhLCQkNcSAohZFEYQvvLlfuBIa+Q\n",
              "pvTau4LoS/IsxDpU7U/mLCtQprmG0sSHsfM6VyEJGoQ8AAAAUUGaUUnhDyZTAhX//jhAAUdSKB+y\n",
              "+Zt1+GvZDPCZyS873WwpR9gDeXSUjEcTV86yk/37T5irB70q14LPpNsr5nHzRVwoqyKWKdS77yX4\n",
              "DeYG1AAAAGtBmnJJ4Q8mUwIV//44QAFHTqsKzwAz6RWcmyqjQROjab+mwECQ9tGKr8eQhWP2Z69j\n",
              "gDyb5ZnhMGEIDmiI98UAupxWtv91FbhTCGfx3qhjt/lTKKhewA6enk3uvEHOTpl9KN3h7ox7HwuT\n",
              "gQAAAH1BmpNJ4Q8mUwIX//6MsABUquSyABxdivjTauz8AQLoI9hOyhtc9neFN3pgo4CONM8238rY\n",
              "/4JDbM4fTvGK8AFaQ/PfIIzFHmeCWhYPt7UTcAYu0mcgZhCMykXOxZHvTHWVAT+jwSo+mAv44ttv\n",
              "QcVBjt49w+C8lCblXPiTgAAAAI5BmrRJ4Q8mUwIX//6MsABUquSyACOs7sDwU3CH8yDjg83DLyzt\n",
              "ialJAGYtd0u4nbBLVOJWgQXQy5GfdiP+vs1we1tl2qWYOB9NwRKOOJR/QkVMO3+spFjY1aByzdYa\n",
              "ckgniwnqLQkngXE9ymO2iXPP6eLkKPqP/aXLUBlINOyKwzOJktxd4OE/3t2xkO6AAAAAkEGa1Unh\n",
              "DyZTAhf//oywAFSq5LIAL7nDBoFRPu0LD0MNqXlBmDVfJ+K4afdbl4zghSwx/XYPquTGosNu0wS6\n",
              "XCQUMacAkKCugens6d7l50yNlnJKGZaigPwDoSPgenDbyXs5rKTbbdfj9jY6TN+dDSkIAk3gd+l5\n",
              "1QjUrpIFZ0O20P8anl4sboY3/LTpzAsOkQAAAJVBmvZJ4Q8mUwIZ//6eEABT7Bv0ADaaNvkVdEC6\n",
              "Bzm2zjhuTmpaBj3ZqkKR8xmyd4o+o8klyFOpJu7z2rx9szdg2lAZXYyv/lHe+lTuICBEVDwavM2p\n",
              "OJlyOzGzh4gGdBnzUtFsCXHlVuPpVUtd/w0ziiab8u5YzPhSU21AyYepR86pdlb+Kmbqhn8jSPe/\n",
              "6wPgfINYgAAAAIpBmxhJ4Q8mUwURPDP//p4QAFR338E2+sCnx//wpQy5nkgjxfb1dcGVcAiI/fag\n",
              "rphSE3cguhoCoxjAdR58GE/qoum+OboPKHYhuMqwlo0t8PPlbt3//hthwQfNfLFyPK0FFuYLKKGx\n",
              "3P/YUdGRTJEJ8bkaG17TJJDlC7f0SweY3dNCnt6iFf+IATcAAABIAZ83akI/ABsCdz9jisc3HzBJ\n",
              "GMSyi6DI4GMkvtNi6aiRAuBVFIbGphYwHqbQBXSUTRlOvrp0e6+81ekVKjn4Zxn0ju3kAJeBAAAA\n",
              "d0GbPEnhDyZTAhn//p4QAFGrtNS2dhpfbotXNugkqzCnmJasTlXKB38oHJYki9KiYT0DUgnYw/fB\n",
              "wAzp1/ivYt57FumM3rRFXG6lVnYkv2Osrvw39mmZdSth9bhjjPZ0YKelFG22zXn1T1hmI0bj0FmU\n",
              "ugDxP7BQAAAAUEGfWkURPCf/ABYa27m0BD1kL23PApqAxfZbys9stWU6KUJXe3g39pSd5r/KsPeH\n",
              "QZ28gbtJG6sW/xhhOXAcO9zQe90lut3FtC4FpR5begcdAAAARwGfeXRCPwAaXgsL/miVzZILMpt9\n",
              "wfS2Q6bowfjCjys6xzHuqyLnTjh/LBzAxMmLnB96u0IS2o9ttW/3qMLHQunNrg7ZeAIeAAAAQgGf\n",
              "e2pCPwAaaJ+F/w0PU7Xn336h3Ce7ZGDd0pRYGXWEFG4x/fe/Z4OWBauBg2762viIhfQ9jnCXocS0\n",
              "23FZR54BJwAAALVBm35JqEFomUwU8M/+nhAAUj4yUOmYEjCpqvaZpc2B/tVZMfI2OwCPn9kqIUK8\n",
              "KN8Ikwy2WBCIA1Kf8dpJXND17ToDE6NSZuq7sMZSl+MeCPU9rXplYE1qZYFfxMfvLqlO1VD3z066\n",
              "SOEIcx+pnH6Ig2D16+pNNgre3uhnhaWcxyJtHYXV+h+JcRuyB2t8wMpaqF4aOx+argUJHOiYGEeq\n",
              "/gc0S3mKJYb3ol5gcye29E15AA2ZAAAANgGfnWpCPwAaX96otGfVG10cnMIRI6sOV/C+0MFqexzU\n",
              "qVytXNc5kE+PnNa8KU73BNmth2YDegAAAH9Bm4BJ4QpSZTBSwz/+nhAAT5RLF9wAzLHGNqHhdH/G\n",
              "TkO8OQHWX1QiNRWD852QhpkQkGq7+2/l3cjbwfi3eh/5VmnZcno+vRffu8tY3YhhAOTZxTDB2I1/\n",
              "3I3F5/lkaVy4aF/uis7ciPMyzvq0Rb3AucPudHLVGloQZ6OCrRswAAAARAGfv2pCPwAZv99VMP2+\n",
              "1ktgx80wtPrMOe4OJHWJhgY+NXmNeMNi5lTkkLOYQ6OF7j8MZ4eliSPSVbm8AKxp4tZCQOOBAAAA\n",
              "qUGbo0nhDomUwIZ//p4QAE9rjlQGAHBgxP0K6/QBZQEaNL0ClwaHjyKRdKmSR2S5sB1I5JcMROgJ\n",
              "8fgFJ/+3FLOsDflnSHCNltkjSQzeW/BKlOW9ht01CLznGlHeLDEXxxMbpTx2oI0s0a3FLkAir/CM\n",
              "H5b4c2QI8VZxZwAG23XcBpnwHp6sgt86qbymqXmDH5H+apDGnO6i1aOqsDhfUg4mS3V7NiUnBiwA\n",
              "AABSQZ/BRRU8J/8AFZRI4Onmt5BRgAC1KwZiQrE7J02u0G65clYnVFcrn+FtMu1yEcpxyuqsNeec\n",
              "WULbCiT6sFRyrJRKugLmq7WJRfWVgPKU8JgakQAAAFEBn+JqQj8AGb/fVS0xFYqjHA/vfzCAFqdk\n",
              "cYlwsqUWUe/4AQiiSmLEkRQ9ZR6Q2iZRVrG5+gwVu2b9pWUnS9GThB+eU3SqshqnPAc3OazECXgA\n",
              "AAEOQZvnSahBaJlMCGf//p4QAE/+LxX4eAFvDB24AX4snE6MoEoZB2dyPZRtQiJi7oiOHQX4hvTf\n",
              "pufwpIfb5h/5VjyqGK9zAY8wCw6ant/ZWlGAcXA68JEEWvA6i0Xt66Psk10DccTeNNrL+3B2BaKt\n",
              "U/nBmHUjZvHooRJZrobaK6QpbiUleibVdwo72FTB6Hbz6eJruM9ksyr3EBx7Fn39wCI4kT8qvN/C\n",
              "VCXtlP0lnV6UBP7miw+YpRIcFw5sgUelZZ5ImtnAcVwvTSTeyCSqM5YVAVtPqUqlXJFoLv8BiFMd\n",
              "kdWuXs98OO3P8lubhJHcdSGSX/CuyKBWle2TutuhbXBqdHWe8jOE0fHNeU2BAAAAV0GeBUURLCf/\n",
              "ABWWSPdl/pN9gG9Yyi9jciLBDBxSvq3lt/Hg+dY/umh/3nXEhbAcJY+hhXtkM8pBkVPMKvvl3qqA\n",
              "HRFzetw7ona0J+5RFXnVRsrycg0S8QAAAGcBniR0Qj8AGcnG6NiEvxhbYAWejrZxhmW0WA9EV4mA\n",
              "C6grPyrGANO8lnD5p+WwUOv3GjCUUHlV0wgRB6M3KBooCrtOf6GKf0FLunzgr0s4NMoPh80S9rIx\n",
              "50teI12nwid3Q/oUGg+ZAAAAQgGeJmpCPwAZKJ+CUSCm1ZwfbQ6lj+aiu06CvzdPQ75UlJUQIMDS\n",
              "kZFA4HMrrG6A0mAwdCYWddQ6f1e8tCc6aKAooQAAANVBmitJqEFsmUwIZ//+nhAATVU2HABO2/O1\n",
              "PPcyEphbvOJm5m0ej1jDbHcA65Cs1BIhutOC7KqlDfV++eZdnyldFyJyJdK9eJxuaqiXAytrcqsJ\n",
              "ZzuTjZ9mVwFHVj+oafM6PnzUVztYHTSH9w4LhpMnWxffP/AGtpO357VUrmqnY22yXUh1RPm+sVAl\n",
              "ZdkD6gOq3x3ugf0Y+VKBe0FwAo6mqmst/NrJ3zf4RgNdhaspV447hbUd5p47ZdrK5pNnPV29SOb3\n",
              "SAA0bunBikcyjfZtOvINVKQAAABfQZ5JRRUsJ/8AFQqVc/P3m35peTNja+1b0cwwloGX5/qjX0Su\n",
              "WBsCMcg4+O18oGelFPHU5FAxUd0IZML1iPxuw9mCQv7E0GIDeUXbBd4ILtyE57COLartEiel3lxJ\n",
              "h6QAAABIAZ5odEI/ABkpxwxzg2kbDu9l5LWgGmELLQ7G0X3Usa9e8UJUAM1Z0f08YjbpG+7mULjq\n",
              "T9qC9Oh3Zqs1fVW6HTDeQCUuG4GfAAAAQwGeampCPwAZKJ+CUSHNs8moYXbJ/e0e/l9DtbJ7xyIH\n",
              "DRQx0kpb6AK1C8ecouJOGtBZVd1BoKU2QVP7L3GJLs2AVsAAAACyQZpvSahBbJlMCGf//p4QAE2+\n",
              "TwG+SAHG351B7eVt2+gTu2vAIzAMFWOBfIDxJj5uzpqUYRKZrQSO7qqDHzTCUXlTwC/XJsfnMmIq\n",
              "oKP0ItWZG3rtoc74Q1yibb1sRRv9PMsu6ma0UbmmAq56vTGtkpW5yuKRZGYq4gS6HPk9FSEbLpfJ\n",
              "Ask8UstxLC0KomKmGeSfS2wWLHuBU4Yt8XxqFa0jqEph+qsYhzlHRX+EJIoFBAAAAEtBno1FFSwn\n",
              "/wAVBkj3XxjABO+O069WtZ+9AI1lBYCN/aNQeh01V4PUOBPn6xUN8LKmtCoeZDCO2f6w6jRuLY0t\n",
              "ZQ/Msh4zHPHQakEAAAAvAZ6sdEI/ABkeCsB4Qu3rlsTQX6lMYkwXCk7TlpUbYpS9ChBvMBla+R6y\n",
              "T8TvA2cAAAA9AZ6uakI/ABiIn4HaUCOhtUm48jGHO8Gf9xTuUiIFcvOpa+618deNKPi1qw+YMoRI\n",
              "TuW2PMBzA0xWf1DjgQAAAF1BmrFJqEFsmUwUTDP//p4QAEtD1XdeQWscHIaTCYM1AUL/epVA62tK\n",
              "Kf+IOmEJF8fG+/HJUB4Nzl7xABMOvCml1bsKKs7iRFGR/3FWOxQbHDxNuoJgpI7y8ekjAYAAAAA/\n",
              "AZ7QakI/ABh/30aYsEJFt1u0xai5OjFgXQt+y7ItPc4XAj9tJVmxf0HrQi3KPajrMvBHz9JLf1hv\n",
              "BGXx4ELAAAAAbUGa1UnhClJlMCGf/p4QAEtUpXa2emBDAD8ok1uMBDvidc77WoYT7Z0Yp/P+Ffmy\n",
              "Q0F1kp+njwDQkj5LT/EfpahET5x73kvft23t0k0VsBNhB8UAQlWJD+kSFuRn7iYGXWYlga3bHriB\n",
              "kmNTgVMAAAAzQZ7zRTRMJ/8AFHRItTVGtfEUaQHvWpspQDvUX4rsVaylH1hmbUcgjLgCYSkRXFgn\n",
              "UCbgAAAAPgGfEnRCPwAYfgrmKC5myMb+AUlA3+anaOnw7tmse8fsHvawur034zpd0zgsloPJNoiT\n",
              "gketpQWz0qrWN3kbAAAAPgGfFGpCPwAYgmX9PA91xjWso22HfwMZY96olJiTbZ3/LwGRM7oJ5C8f\n",
              "zntI04sYvZwtP52VQM3w+CVAoCphAAAAQkGbF0moQWiZTBTwz/6eEABJQ9V12FV3cYqMEcXvc2GP\n",
              "3JbUWaEbeIrCVxgybFyOE854yfU4xApeMjmvFoOHbkK/UgAAADcBnzZqQj8AF9/fRpiwQkW3W7TF\n",
              "qCQhha+CalZNJ8Pf97m3RacTBtn2IrBq9BvDA3BcrSTWKBNTAAAAhUGbOknhClJlMCGf/p4QAElE\n",
              "CW3XsEcgAdW/PtCJsWKdH0uYcusqO74P3n6K1Ef/Ph2FJf/W0MT1dB5/RRZ7XYpivcai4gQlDP5E\n",
              "Dw2ivZ3UblGOm/YsK32dGXUhcGjQa0pssHSJVQu6hs5PEsNYNkV8S7myHSEefC12IY5dnrUdFPi4\n",
              "uQUAAABWQZ9YRTRMJ/8AE5/aPZbfZoAS0yMfDTI2s49pW+w5YlOhNch6evvjTPAl6fd8+ep2jNz5\n",
              "RYWwRtlxEh40wGTJ6HD5mFRP1+ZmnELQsbgmCYbTvUAnCTgAAABCAZ95akI/ABff30aYsEJFt1u0\n",
              "9lphAUgA+PspaYv7PslE+8bv97x0QFtcrruVpHnXl+q4lHCh1BA1UKGSmKuILAOnAAAAdkGbfkmo\n",
              "QWiZTAhn//6eEABJvnsV+HgBbwwdXmoeLJxOjJDTIZa59/fy26GnI2PjM2uXGatWyu4otDt5GGA6\n",
              "g0yGHx0OYEqAUIsjJKRpbU9ksd0WNCqHiXlq+nfRRITZcZ34TTiBEQkDzQgmL0YsI2ipLk7+amAA\n",
              "AABUQZ+cRREsJ/8AE+ZSNq9Uol0/UYgek1hPaCiyzikE06qdrofCWNo9wtYy+/I7pSoJlSrdGNY5\n",
              "vSzOoej0mcZJdByi8PyDwx/zgVwArGQuQmIJ+ApJAAAAKgGfu3RCPwAX6cawTa1hPX3Z+x0MIs4V\n",
              "eyJwjGDWVH1wPKhgsqKl2fplQQAAAEkBn71qQj8AF0tfgdpMJ5zhB6jkN/sXfhMm6ThMqQmXbZZu\n",
              "htfln992ORXfBx+DhwOmqipB0yEx2T9jMoqx936IMx3CeGntBH7MAAAAjUGbokmoQWyZTAhf//6M\n",
              "sABIEK4fPgBnBNkqnTPLOmOwD1XVftbhmQft7JaJKtbec7ZWBNvYeJWFMJJfIwb1a0LSThTJmdlL\n",
              "+hMOC5gVaH6zhi75di/zECpXrGVRKikibVi+90PMZLn1HQlSFQUR09eV4kMeYJ34R2xgbHKAbbcX\n",
              "Mlvtn+YvRpmJ2w6FsAAAAHtBn8BFFSwn/wATYSd5z4AfZ4p07bkSeseGm4SvKKwXAiJzH1p7Vl7s\n",
              "KPcWfEq/LlpdViHagB2+f9mPUUG+RHHW2Tiq3UnAFgecALcsYC9xUCS2QEOzzcAJdcu4rcAzRkey\n",
              "yqQsAnkPQf73/+8L0oLS0COG7Mb0JW/YFJEAAABbAZ//dEI/ABdAywS9BYgBbW8g48A9ywfKDiOD\n",
              "fmDZh/4f1q1FDoVua1Kx679qb31lRRF1xudKclQAckisrvRwu+hPJqN6yZ4Bl/9SVSZOykA1AVGQ\n",
              "iaLjKaoCDgAAAHABn+FqQj8AF0KfCcvUI8MANBIdOVy5ZB3GUhb7f6PTtRsNkBNVUKhcwGwNrSTv\n",
              "BUxQDu4NX1ZR4dlfy041r3yI3YIrT9Gi9OAkTU0o/v2d8sToiIX9nVTJ4sLmFp2K3OhtCvFzbDoU\n",
              "N3P4tjWBwwZ9AAAAeEGb5UmoQWyZTAhX//44QAEW+ZbCBprMAWBTAsidwQT6fqAWWCJg15Tjizsi\n",
              "Z/AgiZBwU1UkXpQu0nWdSZPfBF7TMTZOQXo7UkJKBJCwLtdV3UW7eye1uJDFTxTQuXttuduIhYp/\n",
              "ofyX7X0jQME932zdbVhndkaxTAAAAEJBngNFFSwn/wATWIj3Xxi/+JcK3LWtTKqZmsbBZUSj9QIF\n",
              "cmWjIE7TBniPO5y82OjH6/ReTNin6pgvP/W0ASd2CrkAAAA4AZ4kakI/ABa7X37/H65MQDl6Wp/T\n",
              "SONYW7oBD+BOEIBPRJHbvGLO7d4uTHAyvQoHqZv4WP/xMNkAAABjQZomSahBbJlMCF///oywAEYA\n",
              "+WPwAcXX9GTs1nTxxuS9wEhh3nv7CwCep214w9SaBzpSckxAe9yp1hO6fNLjmT1aJLBDwQpO2fRs\n",
              "c1ZWWuw7m6pGCYstcskflDCaRNJFXLFhAAAAYkGaR0nhClJlMCF//oywAEYCCqzgBF+4szKsd+7h\n",
              "PBgb7w985iabqwrOVJ9TOYixCWSn18iuhAvSvNRRaI+DPAuDT/aEY+v4gafNrX3DvdIdk5Jig0yH\n",
              "/333H7jOCbRtjg+ZAAAAZkGaaEnhDomUwIX//oywAEYiIoFxtck3czMoskxxO59poChpYNpjrmp8\n",
              "FToSoGvHkus/NywZx8PqFcK5IwGDaBUjDS8SYd8JjJzGbdr1udNYfl6Wp52G6DFEDTvXkII/6QMW\n",
              "20eRKwAAAFlBmolJ4Q8mUwIX//6MsABGKWGI8zsgUQh2TMJZLvSw5H/Ti98UQDpx2SUbuaBLA7OA\n",
              "32f5ZyceAy5Syh1AD9QScxL7M+4/ELR8qvKTEX+vyerf4b8w034ekAAAAFxBmqtJ4Q8mUwURPDP/\n",
              "/p4QAEVze9rzYJS3/ObBDSMcIS09dTgSgOt66F9YXMieLwXr7n6eZi/zTwiHYmA1GlQGwXQN5A0X\n",
              "ufL+bvRiGKO3kx80iRVWmiUfun2eSQAAAEwBnspqQj8AFqgLLPuauIYToA100jyVqPzzB1GIFroX\n",
              "eiLRI6VYTPjLDS8kj2tn7nHOXMmw37QUeSOkYOOaRTyJcmybOdnavCNe75JAAAAAW0GazUnhDyZT\n",
              "BTwz//6eEABDQ+pyQAVUnH4SQ06ZFGnUMM3Cv6p9hmJoATRjYGyHNJWeEnUJcNIdooGXqzCtC87R\n",
              "cWu50xYqxyashvCISo0QMNZt7TPRhk9lQtoAAAA6AZ7sakI/ABYin0aZQAACywfbH71Vbzvl7yoN\n",
              "pgQUrQfFBp5D9QHeX9AAm3hKjUgGg0Jwl1p79uyXgQAAAGVBmvBJ4Q8mUwIZ//6eEABDQ/nd16aW\n",
              "siZyH9MJ981TlONkNTIL052+QR1uAwEQaqawrpUe9aNfi9VmyGrCJUlYb/3oNO66tvxwOWzUVJTy\n",
              "3/a+dRpPBPuF5Tkn9GMwAZ/ydqC1SQAAAD1Bnw5FETwn/wASVojd0eiJ6wJXrKV+QfwtTNaDiA21\n",
              "R5IAtz4A/0lggnMLkZVgwJsr3CcdJd8dy5RvxGMrAAAANQGfL2pCPwAWIp9GmLBCRbdbtMWoJCGF\n",
              "r4JqVk0nwNw59NYm4IBfzVj/GXMxXCLQn1KLPDEYAAAAbUGbMkmoQWiZTBTwz/6eEABDum86ziQJ\n",
              "aseZLYtWy4gtJRsTmxmGm6hc4r5PhbfAvh146Kkx+u30sD6iKREkGs4HUH/8elkuIw8qrMPK8Tnn\n",
              "+fUCWUaNfifP4QMPL6iq/0M9ZI5l2WF64qZBDZgAAAAsAZ9RakI/ABYinqiz9Zo54mj72IATw8NG\n",
              "BDzCBGf/NT0Ykhy/maA4agOlEzEAAABVQZtUSeEKUmUwUsM//p4QAEFkGxfcAM+SyPdQ5B2KKVRl\n",
              "76pOlUvsxAEmKMXAyQ4yeQ9A4RMYSiR6Ta12ymnvjuyqY/DUzfOe/7Tbb82s6KnMlqvHTAAAADUB\n",
              "n3NqQj8AFZKfRpiwQkW3W7TFqCQhha+CalZNJ8Dccs1hurK3JvmmaMU0XRMiYS4wTrH4rAAAAFRB\n",
              "m3dJ4Q6JlMCGf/6eEABBQ/nd16aWsiZyH9MJ981TkK4m+whs4WojECA31uQQ6Tce3pjH8cm5GElF\n",
              "ZWvFf5Q1sf8Te8xqIJLx3qywYAONCryi6YEAAAA5QZ+VRRU8J/8AEdaI3dHoiesCV6ylfkH8LUzW\n",
              "g4gNtUeSAJ87FKwS8kp8VqBQ0/yDAcD8dChe7az4AAAAMwGftmpCPwAVkp9GmLBCRbdbtMWoJCGF\n",
              "r4JqVk0nwNw59NYm4IBfzVj+9Clr/VasLZAXwQAAAJ1Bm7tJqEFomUwIZ//+nhAAQbpvPE6ZpyAD\n",
              "/UKcN9EP/BJkdB9FB5cSqzyo7NWYooT7ARf4bPasRNq7IyOu3/xnaWANnk/5tS4pGvfQLaNbi+Yo\n",
              "Cr98rGuUc9rtfyKeqruHCr09tYzufHsNWZ1l6JlLDHFy5TVabv4hdKMa3O5xu4NsqzffHPQriZSt\n",
              "9CYQi1Kml1NLWZ0U3LPfLBGBAAAAREGf2UURLCf/ABHYiPdfGL/4lwrcta1MpQ9GVCJKgNa5Jt5b\n",
              "0JD8IIGakHXmw0rCIhccBhG9fwtqmVgUBWmx0I9IGUGpAAAARwGf+HRCPwAVnIbo0eYntUxRgCix\n",
              "w998WS4oMmxjnzV/IKF83moeqDkJzVMvD4kWNAhA5i8UQmuDfzodPCyaH3DQAD4S7goJAAAANwGf\n",
              "+mpCPwAVC1+B2lAjobVJuPIxhzvBnJjDwMjzjsgFnK0xlZUJxfQ5gah+z9dpfmRGLX61/GYAAABR\n",
              "QZv+SahBbJlMCGf//p4QAD9ei1DwBCvlUwBfRi09LmHLrKju+D6h2rwh5G0DlCket/xAoKc+CIv8\n",
              "gOUi0KdEd2QUyJXxhmo86uOBjvI4lvAhAAAAQEGeHEUVLCf/ABFWiN3R5+Dda9r3V3ymrQzeWNcX\n",
              "Ffx0amyF1CCxpSV1CVSLONC+Z+fY1YaMuRj0P/eXvawdJB0AAAA9AZ49akI/ABUCn0aYqxgWFSvH\n",
              "5H7GaL5MbGAw9V2kf7e9NANZtAE2qarMJcboxK3wgsLbhXMj8oKqIqhZQAAAAJdBmiBJqEFsmUwU\n",
              "TDP//p4QAD9ef/XS/gBPR3YYPghMJODfemXb8jdC2tfy01aLruiRzrQG0nAXEThE0rC8xBvWfD9v\n",
              "ocF5LWv7j1U5ott/+DDcS65dUQM9gi0V6lwZp54OyidhDYKd9UHwBLTxLctb9PmlW4/+95NMMx4O\n",
              "A/hbYxdxUbxuFbxgncuf3V9xBLjFTew6uOc9AAAAXAGeX2pCPwAVC19wyZt2NVdD6syOhiXM53cs\n",
              "L+sThRWMhMDHm1vjsawODev4a3QfRVL5kTYWWqS+iew/JkUWtT8gjt1xE8vcJi46JwRVy5ebTcUQ\n",
              "ArXnm7wutdpBAAAAikGaQknhClJlMFLDP/6eEAA/v5HFDSBItvdSoYaeAD8moDKPw9czYQfGEivh\n",
              "Dc39g4gTl6veVOQdirPwDvwA1g87aPGIWcf/tBXRR+KszBF85Xplt7J+n3Ea38iTC/fT9fEtF5uJ\n",
              "jz0n5rOdisnh3XvSitLB12jI3tMAlBQVjC0DCp4J5OrQik7LIAAAAFkBnmFqQj8AFQUl/Wm57uh6\n",
              "EDerFdNYpXsyW3yDnslbVW+iJDpsze0+Lmn+Z9VlYsA3WP0+OiJ6zqg9BIarHVfDBZLMn73WgUP1\n",
              "s2y35ofLIvxeLfJyRrpjKwAAAHlBmmVJ4Q6JlMCGf/6eEAA9/os5+2W1tRZCupSFAS2Px/5IOjwn\n",
              "GZ/BeTffkmtkxJZRFVBxEBs//dPZdwbIgGDxn0wjkWfk3lYF7htP9FpEFU6rE5bHGjRayFPApvex\n",
              "h85XkHdH8SkWc1Vj4Ewi0bAj/9cnjhiHX2zgAAAATUGeg0UVPCf/ABDWiOI95rQ/uMYjSYK1SWvj\n",
              "H2cci8O/4vnBFkvdCSjqQ2Nqb4JYJpH3ycCDRYs92fl/Wns7CFqwBskFUA4C8XMqDe3pAAAARgGe\n",
              "pGpCPwAUcp9bDe5B1qk9Xha7cEdUerL0UM2xJcvdV0cYrU1adjVq5jV6XnqdLfwHGazMn+9u7OKB\n",
              "jN3by0ysG7GCBD0AAADEQZqpSahBaJlMCGf//p4QAD5cJzvnbpLACsUSa3GAiXVxSlgXPTRvR1Ik\n",
              "1jVBtLw9pirNQWxl+awIQXZ1QQNGfdeeWS2Ka6u7ybCUxlYwMa3LGIJl7RSDB6XnpJsOqBS+wGck\n",
              "4X+JQcZOScK22DK5qdnxQIfHLd8y3xSjVU9mcIyPrsjtAMCT65fS5mMYA0gJX1r07kaurjr/7adT\n",
              "zElTzQX1v5iyGYekuDVy+FFKl4qaUW+JmqPmTqNl4DllqOuTR6QBqQAAAEhBnsdFESwn/wAQ1oi1\n",
              "NWjOZVddzqb9C5Wv/5FJuMJV3h7Nf97Tdxz9XMid4Jyp4IPHV0lnnIUNQdrisaXzAeg9bUgUeD6W\n",
              "vpEAAABSAZ7mdEI/ABRwyuYoLmbIxv4BSVUReFFtXsVlG0/zH9HsKE6pOHgz+aa3505OmStTUNnd\n",
              "DZEpIlSBegaY+txiHw5cwEwnWGvfaGI2MSeXgQBewAAAAEgBnuhqQj8AFHUl/WvtGlr2FMI1ruXV\n",
              "HedalnWD3UcQrviroPfDwfaWuLsp4jHJMv0EoJg8cF+zNJuMq1NzBa7BFkYzb/dAbMAAAACMQZrt\n",
              "SahBbJlMCF///oywAD1a0+BrEgBHW7DeIg/M2zOqEvmFSY+O9CE4RbcJTWCXaQJANlmm0E+iBTJS\n",
              "ljjb5JuW07fU8f3ckt3Kl3KZpeo+rb3osXfF4XXY3NT7AfUyQcm90B4AsL5vtV2VXdSWzmW9/VSd\n",
              "mgR/IuH1z62fQmJ265dHQCXvf934KmEAAABhQZ8LRRUsJ/8AEFzVdLPWc0UZkH/rQqRrDN7CZFTd\n",
              "rpBzH4gERwLTBNkkaWS+08hCQDvuxVJ7+nGMQUbT+2DrhZeELMdBQNLwSWl/OGGu7truqqZhBBrU\n",
              "jOyBxRY//YLKgAAAAE0Bnyp0Qj8AE+yHER8tBAfhNIp0tgwmEE1Ex9Z3QZkYXM5V9plQ8wVI6ZZB\n",
              "0i3SYoquq0gI1r0qo6PvKZ9SCCx+Q/24SAWMe5ZMAaBHwAAAAEgBnyxqQj8AE+tfglEgptWcH/1I\n",
              "6HhvTk6Ja6s9ARJ+ASBYRDSz4uKhngSmVlOND6CrXRv/A1GZ2MSJGxS8H7jHnrAAMwUQO6EAAAB3\n",
              "QZsvSahBbJlMFEwv//6MsAA8/Gzvcgb9xho5cGyiriwtNQTIE7kPX2DI5rctgNUANxVX+2vV1Ifo\n",
              "bx23luX0C//e7jhD+ESjfA9tqDMulvYR29J0uWuR9nZ0bpZ+sZcPy1fLaScdpixgI229txDrVzd9\n",
              "OPmdKHkAAABXAZ9OakI/ABPinwnce/y5cdk3PvijFw6rg+ZnnNfzWG0TpGmHMoK9wg+iRmNbLAgQ\n",
              "r/00m4Uiwnvw/FsAcoZ3G5xPniH96JciNMOTsId/ECNEVVJOkANnAAAAckGbUUnhClJlMFLC//6M\n",
              "sAA9XCdBhABrn+p32T5dudZLPo6KqhkAKyyOigXuvC9WYUAK8N987om+w+kLgqyisbE5YmtO8cbq\n",
              "xccFDfdC3HpDwEoPp9FyZdLpuTxTfdulglbRgW75oCIcY4z01M/m1tFBnwAAAGMBn3BqQj8AE+UT\n",
              "c2sL7chpU9on2QH2Y+I4+46XLNikle4hRAQiOZpage6e1KZDvX+Fo/VTYdMMkqlFFEhMXSJVLo67\n",
              "zYF+ktF8WCkaaZV3ph9bNOhUY8TWGsJbJhm4J7JwJeAAAACWQZtzSeEOiZTBRML//oywADucbjbg\n",
              "CJhbi0OgJDVznPHSCruQxEaRZWMeALwuRPzD723O4EaIlRuVjx6mZrIRc8ZqJq5QIBFX1IqjrIyC\n",
              "Ll7M5envHoMUX59p5b0iIV+YL9OL88TdcyFCV4j3ox3SuQrElV/HlUu1RiPXr7AwakB2esuhAKZa\n",
              "jJLITyA9WXNDsy2f0k3BAAAAWgGfkmpCPwATHeTDhG/b5aa956pJLyWEnD+jSIkio4DSufJCTDD6\n",
              "C+0pkjgiw9oJzuvJQv0U0GGT45t3q1T2cdKRACt74yrjasDfmHUgvZOBUYfaj5G9SxQImAAAAH9B\n",
              "m5RJ4Q8mUwIZ//6eEAA7RzJutgBx5f8TmsathToU0/FHzVzDcMMF0vFp/OlPmKSQWtb6Zy1YqAa/\n",
              "+x537npl7VBicTo9DgrOx5Oh0McjuSUiUzlXjqY+hsW8QG5s1Jf3GmV3urU6MYfTXE3bHeGO3iTM\n",
              "YPz5V5UNRlRGVYHVAAAAnUGbtknhDyZTBRE8M//+nhAAOz5wuBbSAIj3nbL1jMjxbsG2zyWhr7pi\n",
              "HJSv085KSOPw6Hg8sv4bKyKq2D8z0RX+OL1AO4nNlfN6BPaMw8q+0QMtA3pWcOi87LQ7eSN+ZPSQ\n",
              "/41CSXu4K5aPIz92Bp+0NFoQO89V4yONvNa3urLa5Z30jWrtYoagCERAAhu+JwZwMT+cZpqaWNzK\n",
              "GfEAAABNAZ/VakI/ABNWLuC0TGIXtOo6cH/YdRpMZG3XnaEjXf5TDr7MEnA6zSHIkK0rRF1t0i+M\n",
              "EpgCtImiRGoRMNA42xVaWgWf8CL5OUWAZUAAAACsQZvYSeEPJlMFPDP//p4QADtHN88eFKMHfS2Q\n",
              "dLtGJsEZ77IDuQiR9Af4YeNeNyeb78rZMtEGTrQ7WK+5YrG64PVNZX/XkLvoWS9BShl1vYij+CPn\n",
              "1eY3FDv+VpdTKaK1p2D5FpQQobSvAA4/3zlMpFe97pK2/qrLroMMZYsC/WNdNGYcD7spjz3k/JGT\n",
              "VrcJhsL/VPMChlsZMpmMe6/W1m6K4hd/TNKrT3EOOQAAAEkBn/dqQj8AE1fxrrLthuMa1lG7QLE8\n",
              "aMM/k1+ksL4iClYm3Dt6YKgMg+5jExCCUk0oiuxiN6K8KrpjUvJwDAGwpCLymytkYCdhAAAAxUGb\n",
              "/EnhDyZTAhn//p4QADnq3Y4AQmsLZhoYkxnyEphKOymyIbM2c6vZC//dYc5CoU5SR8DtA8GYoReT\n",
              "8KayH3FkHSFamG3btymgJRX/vH08y+6rC1JS0x+ZlmxNBJodBs5qHFyE2S9Suxksa9/Lx9OX+z6Z\n",
              "GSHSOSn213+urNfTuiwJgt+yO55BNSInnbjXad7i4YpbamZ2nSsi729O2zr8Ngzk62OeUJi+deyj\n",
              "hBMvgYN1Z2K9K/KV9O2ClD/vSj63qg1IAAAAUEGeGkURPCf/AA+Gt4a19sXIrCglO5KeGSLP/+W4\n",
              "nn+TJH2wvMRxu/TTkoz0WPjf0k7lZ0uhUgPa/M+AQFL/Z5joKsCFeIVr8C+XJqtf3IqpAAAAWQGe\n",
              "OXRCPwAS3ojlwAHFQBiKDZ8Tlnz4rKTSG4TnrJIGTYIUFAUuP9+cObrqAT97qdKyF7I7hfCmp9xz\n",
              "5fd5/28BHGHGO/kpJFmNjmk3Om5EV4Qlk5XIfoccAAAAQwGeO2pCPwAS1i8Rs82Sg2jmFVNCjQSR\n",
              "cFu3TikTCm2z977TW+BX/dO3qKszsDS/2yWrpUb68ChmDXqjH5WjveISAjcAAADCQZogSahBaJlM\n",
              "CGf//p4QADnnPEm+j9IAblwDeHjpPAMSKON9AndreJL88g3VbwEt+oPGcT7RqZ6jfftq4YFById3\n",
              "BxiqmVeepfYy5OSW9ZAtjEMR9holdBzae/dw89g4bCr/k81Juvf0ptDqU9j1S6anvE7sEpnQeanx\n",
              "ImC++lif9MWU5D1ORwUA8RZo5pmDWlo7+u37c9mX2Do9uFv46gW40OqVce3oAnvf+rYI9H0QHte8\n",
              "Jelafqci5jg1qTtgD0kAAABjQZ5eRREsJ/8AD4a3dxRWemW4+O7z+ukahgfPOYlssNCZnLgwun28\n",
              "LPjSzid7bjlFTDvChuOco+Yn9/1GKflxy7v3RG/mogEISIazGFUoiICmMzmzTEeoz2LUABYCMoHs\n",
              "MEfAAAAAUQGefXRCPwAS1OL1J4Bs7XspQDr2zD0df3dWwN/jc5lDSnVYG0V0BVtHs9LlPeFDVgGi\n",
              "RN3cb8OLV8ABNCsCGMtFr8TiGK5mKEAO2SVjQ0A1IAAAAEsBnn9qQj8AEtfxrrLthuPXXAgLKd+y\n",
              "Q84GAB0/QjRmggRptg/53rCfFXhpk9ji1kRzF8qbIzKS9ciI0aiS7UbrKFnn8zIsFLoAfcEAAAB9\n",
              "QZpiSahBbJlMFEwz//6eEAA4llkZPo6mJBABzjfm62UDBlJ5qmCxkLswAcGnOmQgLpbatpVwDRMH\n",
              "IlStt+8EPlSwCt4zKFWQW5ekKlPBkYCSmN1S4n9GGhvMzE/q3Uf0LuZyDIZYPKuzVkm4G/2nKosU\n",
              "FcxO03NEMgkOGBAAAABUAZ6BakI/ABJWLwPikiEi27oaFs73HM6guAtIde03zVZqN2F5N3MR8vjw\n",
              "+soF6MXv3EMqAFXTe6m9CERbb1tQeIbHgSAUbOeAUf34CT1G088zwH+BAAAAmUGahknhClJlMCGf\n",
              "/p4QADh+qE2cNTN4APlRqiYg55G7nxHhGcBHu5hYrhLFJ+nTjQAJVLi9Y7uQK2j1B4Tq7AoGR+s9\n",
              "njkoUSh7XbQt3pEfXpCSuH+9ezq1QfRqeosJgltBt7j6YaVpne5wBR6ggoJe5iqIjYm8q0sIzNuP\n",
              "nKEvRXhU1BE9bAE0OZ3fmu/rIKdpK0i/oYkLaAAAAFpBnqRFNEwn/wAPLreGskWHd8CC8yvX6WLv\n",
              "hiZi22psQYinXJdrmF+t2+904Y/+TUQb17eGk2X4ov+Wfv2uHWld4qFKw7rKR6ZzjUbpOCm/8moi\n",
              "gbXEZ6AXD/EAAABFAZ7DdEI/ABJU4w4TwDPRXI170Xlla26dAkDsSAq20cGz4pO3WJEXXEfM3RDI\n",
              "h2FUbH37k+PAzV8FkFcEOCquf+HqMCphAAAANwGexWpCPwASVi7Hi2PZVwHV8SraZeFgbfdFpbjo\n",
              "M1e3xuVUtnyVmwe+0arUO6SjDKBPLaRgFFEAAACGQZrISahBaJlMFPDP/p4QADc/1YvuAGfJlkVD\n",
              "kHaJJS9swKLJB14U289NlAFik+9FrbfPX+/y6QeVxdnqA2FAgdFONiW/TouoFtpu74nw4czT5ssa\n",
              "e7EJcPK5WmxZJJ8KRf3DrA3sD7DlEmr71/LJzm+8n2hrvk1yA09J1dirZxPNGkelgDMAAABCAZ7n\n",
              "akI/ABHWLwPikiEi27oGurwu91B57oqrChdhoXKpqmzt7xjJKiCIwot/LBJ205mHCFfOzeiksJX8\n",
              "0WndkAfMAAAAiEGa60nhClJlMCGf/p4QADcrxypBuUvXKqrutm3e4VjzqeX2tJa+LZ74vOrD84i0\n",
              "Ab8pLIe/nq2YpejPBcVGXshOh8atOas+wBoyxbwSWdA4bJt3hcW2Y9b53U12fSMXgBg4ZRCm0Bvn\n",
              "2vNKLsAY7025U0rmN55Lf/jWCmGgerbuljmD5eVQYsAAAABKQZ8JRTRMJ/8ADttPvbnAYpoI1+Ab\n",
              "3OkrcpJRdR4RN5rEQVNocmvSP/bvPmIbUG9ZhA5lCjDNOl26ntJpo7fXgUEGaEs/EStuCP8AAABF\n",
              "AZ8qakI/ABHWLwPikiEi27oGuPjhDrCNI6I1jsWW+S7MBS2vVkBEfRLSztAobz/Sa9Pjpq/VGX8F\n",
              "fFwR4fhvScnqhA+YAAABBkGbL0moQWiZTAhn//6eEAA3fwaV+HgBbwwduAF+LJxOjKBKGQdncj2U\n",
              "bTbvzqLdRTAx5IO6JL40J9/M0CdxBHfdSi7de5nX+FkRum/X1w+5s53qnWkwuns4ukGXubS1A5bb\n",
              "58qeZloNPZcOFqlWR6Uj2i+UgAqohaPLTGwDQuCwwvSLb8wpZZXL+pJ1XA/aLIgqxAz4wggjSFIe\n",
              "oP2DL0bfbyVQvghSefvWyJKz39/rnAtpOOgifVdanKYpHrznaWkh8nXC7l3u2JY23WcKyVjw//7i\n",
              "Gn7Et/EJnPIuALZnYop76E1VzUbTt0SVrwL3X0MLdvVwYD3geeblrQj0cYJZ+Ms/aqAAAABEQZ9N\n",
              "RREsJ/8ADts7QCWSLt5DV2JEnAjGWsKeWmCf0TepU6whT+Z3mPi0O2/js0cenWCqXEG/I1VbByGF\n",
              "+bcrTDqARsEAAABJAZ9sdEI/ABHehujR5ie1TFGAKMCdtBpTLidzBpemiERPRMh7Wax1lIsD337L\n",
              "UnIW0+SScEo99AHgmRoBXvg06dTjOsLGNCwakQAAAFoBn25qQj8AEdfxrrKlArpa2gLo3v5ih9nB\n",
              "OM18MUSDYNzO2B6yizmIX1DVf+GzR2WmIpdCbHtuIzimPnfMICjGYXsH0OyBLsQy1XSzsXowm84y\n",
              "sQA0QI8ehF0AAADZQZtzSahBbJlMCGf//p4QADX3BA4AJ2352p57mQlMLd5xM3M2j0esX42WIy7x\n",
              "RGV6qxm8KX8R/i2Qt5LYAyGqQ6cyBdSQ6Fv/uhm9YwN+5Kk8TowUsFjLR6NYlYOk7h0PBMrpDKtF\n",
              "zmlQeT5v0im9ML4FKODynRnhgqq7S+v0CMZGGR485ksPX7KFIORmKe/Gr2xRk2YARCx/J1BGT9yJ\n",
              "jlG+ZIfJGEYCqVLJBWVD02JOh0GGBtlFzNsaA8FkW3p7f9vcn2zUa93ZBe8o9VOaFpnu2mU3qkTf\n",
              "ngAAAFBBn5FFFSwn/wAOgztLcUWZK6mcHjkk48WxSh2c0mf+EkhPwqYGHqw5XT7U5IfFVYs/df5N\n",
              "rL4B37tXbcWV0XymUmKEs1F2Fmir5ae4obhswAAAAEYBn7B0Qj8AEV6HBNcIsyemZU8JSAY+4xe5\n",
              "SflefWNgBzWilYiVdRAidsCei5oFL/GsxI7jzvq9B2i9GkvRkz3BeXN3rAMrAAAAQQGfsmpCPwAR\n",
              "XV+B2lAjobVJuPIxhzvBoY8iNoQgUxTvkTc5unC3EvKVg0AYvbW36x4fW5MRhZOArd1zxlse9ArY\n",
              "AAAA5kGbt0moQWyZTAhn//6eEAA2PuI6/DwA3W/OoPbytu30Cd214BGYBgqxwL5AeWJrUIyParQV\n",
              "kuE1iuFPiajXqeE9abwbej4p/hfhwDHxUzmv4u+Y5laifH2LbKwEWNdFM/tw7CDCTV8FE17VwAf+\n",
              "XkajAiwFbASzrtNcJR0Srmw4pg67saEtIMZI3z1WbCL1G9rS2Uer9q+9fOCMjyNnEsZyRcMYFab+\n",
              "oH97yKgHWUazEboQ4vrc9N3v3dONEAVjCFmCZQeG/6UfR2sStvIZjdO0Q+GShoZjXj1rPiK9nNCM\n",
              "PYYLzE0+AAAAY0Gf1UUVLCf/AA6AMm0W4/utO+GY59Mpu9a129xoNC7OzU9QWVAhQ3b0d+h4izwy\n",
              "hqsEBhFpiXt6CIDTbNLKLLUaj/Kt7Urro72yApKObyIyVYqBMO8BSaT+9McjxzADWGCTgQAAADEB\n",
              "n/R0Qj8AEVTi2jIhdu3RcwqgWzyMRBAY1dkDMpuEI5iq0rCl3qnyfgk/8OOmFg6YAAAAUgGf9mpC\n",
              "PwAQ3V+KBLqNHLm1AK/wkBW3NZjqnjdfadEpgWagP9N0MOSO6gZeb329JYOV1BGMvw0ZfWHOL9+v\n",
              "uf7dj9dH3P9ZgPm/HaElmP+gwIEAAABLQZv6SahBbJlMCGf//p4QADSrxyoAOsBllOG+/qIY1+yq\n",
              "vUiAibYyO2qFN3mSKn1tyefjSGiNZiVO89S2eu5LmRu0XEIAPmCNSevRAAAAQUGeGEUVLCf/AA4m\n",
              "t5IBDE6j/29NLKfsvu+XRbhElnqkfCRcKC8sHV7xyEGmbpD0lrzy2nCk+7JbUGW8KzXfxQNSAAAA\n",
              "NgGeOWpCPwAQ1i8D4pIhItut2mLUEhDC18E1KyaT4G4c+msTcEAv5qx/kVGtKfM/peg6NBGxswAA\n",
              "AJ5Bmj5JqEFsmUwIX//+jLAANRSGdOYIawBW98BsQSHyUiPk0CJw/XpA9uz9qXZhkJS0gBPCUb+4\n",
              "b6zFeX17viF7+kB1mWyZdj3lsZjYuUZ59eYVrYdmxEoV1D75WPTmUjGh3pRp4+e1SPfzUU/B1L5N\n",
              "CWIZ3+G2sj3ebJJ4mQ3reLWAWFtguaWXbkh/N7nt0UX2fwzLsO0vhCIS2VMoOAAAAF5BnlxFFSwn\n",
              "/wAOKDJtDsQYEiAAXD5aPOyjs4rGjRMJQROx6ag4mudBXYdeuNZpgsKbjW4+t7Y5KrKnMV3+Kz1n\n",
              "xPfRQQsc77DTdWSBxwa9zcNPmb4mQLJjICZ+sYg5AAAAMQGee3RCPwAQ1OJl3BZJNxWDFC9rkagw\n",
              "XTXxSE/DnuwInqfWF76PnCHV2mEOXTewVsEAAAA6AZ59akI/ABBdX4JRIKbVnB9tDqWOnI2xqb82\n",
              "DNrgPqSYPi2nWFUL9LP8gyGHeGK3WLOVY7Qu2TAFTAAAAGxBmmFJqEFsmUwIX//+jLAAM8smw3AD\n",
              "7Xz6E4iRASGHee/sLAJ6nbXjD1JoHOlJyTEFIiGdy+kYbz7fv5odkkJIupwt7oF0AgR4WYfGm8PP\n",
              "RIB59NTpUIoFczebX9+Ddxn8p5Sr74+O51ibtg4AAABCQZ6fRRUsJ/8ADdNPvBS2RzSbOcwbTh3Q\n",
              "uOhnMvpN1+YfkQSZvz6JpGb3KBeiIty3JKnnFKRr8E7vHODKbf7h7KmBAAAAOwGeoGpCPwAQXV9+\n",
              "/x+uTEA5elqf00jjWFu6AQ/gThB/rl34SGN6rQifTL/gvyDTPHXOJG4niY/9J2OAAAAAdEGao0mo\n",
              "QWyZTBRMK//+OEAAyJ2oL4bABfbn32yO5I65XVmpn0nNhtWY+7/zSiklOKJGtuy8UqtFI5Z7EJHQ\n",
              "1xBilZZppdr+B+IxMiDk69vui+wT5jMgDSPFaxujvJJxgAa5nSqnlODghCSaBR+03DpSp0PhAAAA\n",
              "QgGewmpCPwAQXV9wyZt3f6Y2BSsmem3xCJ8pNAS6Q2IoDSlKeBrgXYJw+FHw2CG5BxVE8gQoTkiM\n",
              "ZQWoKrgWZT6mhAAAAGJBmsRJ4QpSZTAhX/44QADJ+452wF36dlbmAEP+jZfzOlGTIvbZpuF/AdU5\n",
              "F8wQjCS1Hb6W3h+a8libC8VQi/ugVqw01F0CRRLRbUphRL7dvX5BRSGsTpzFqT3VT0BW4FsFoQAA\n",
              "AERBmuVJ4Q6JlMCFf/44QADEBQ4vfyF7bmLzvLMDFi7YMp2LJzQ3ghS7CJeVFKU/7y8ozfWzaK6p\n",
              "GXJDrDJGYbxeAgxhmwAAAD1BmwZJ4Q8mUwIV//44QADEBQ4vfyF+u/EM3ZgvFDxKN0Ewz07CE2NQ\n",
              "HGX44SbopEE6CbOXt4IL2/hICqBvAAAAVkGbJ0nhDyZTAhf//oywADKLclkAEdbr7l6rFklj2CO8\n",
              "9/YWAT1O2vGHqTQOdKTkmID3uVOsJ3T5pdICdl2bnL4nsT/c7B/whA3rz2E9kbRKWkP8j7qhAAAA\n",
              "YEGbSEnhDyZTAhf//oywADKKz32wCa74D0g/Oj+XsG8rrFkCjRRIsRY/zT6qQCKbwS9cx9JcvbCc\n",
              "LYZVbUyLEsTBhs37BuSEhhJAO+YDE4MvY38vX+oUj4hRRJfRvZCqCAAAAFRBm2lJ4Q8mUwIX//6M\n",
              "sAAyi3JZAC0bgDSHugJDDvPf2FgE9Ttrxh6k0DnSk5JiCjkF0lGc4QSYo42rZjNLd9oG+ZxnbyNp\n",
              "w6v64XaD+XZPYcnmy4AAAABtQZuKSeEPJlMCGf/+nhAAMiwN+gAbTgGL0Hgkvz+F+m0SH13fSKhp\n",
              "kM302B4JsmKXRj6g2Q6kJ3Y7nyO/Hy1+dNaGEbgMSmY+D7qc9pzqbRPmcCmFETht1uBVXTS/oSeF\n",
              "fAMgxuNi+j13lQFQQQAAAK9Bm6xJ4Q8mUwURPDP//p4QADJ65+sH3WBTrDvcFV+DrlA2sywzohFb\n",
              "hx4UAQ7REmr6nT2Y7u4mHLeQ1j/uTr1yPTvj55fFQAAJbtqqiA1cVO6+zHPjDwyB5DFUimHe9A1O\n",
              "QuiWmAk6yejs3vhRnWBy0SLrXP/Hg6De76YtsEnWU9sGUDMb7+ZYtouVe1fZLyg3lioihU1E8+Cm\n",
              "sL7RyFGfqjbZQ7ABRNH1CgfuUI5mAAAAQwGfy2pCPwAP3/H+vx1WoimcXKK6lbaIhKnC0fmSFXjk\n",
              "1Y/Ys/ckzkDcuCr7Uc+SdXRs9sM60X/6eI3BqLYn09kQGfAAAACEQZvQSeEPJlMCGf/+nhAAMTrn\n",
              "4GkaACL953Q5e0rhmdUJfMKkx8d6ysRDO4SmsUlCbwwNlmghE5qq1f1E/OuDe/g5nNfv0uA6Dqmq\n",
              "fRUGR+tLOcvSAX6tZaqGUbY54l9UTuFabCctE9M/c7WbauxdpVcd46/a67sx1AvK5E+sGPd04FlB\n",
              "AAAAVUGf7kURPCf/AA0zPjFAAM+e7lhgIzuyPopgeljKlB7y6d07zjIVF97Jv9ti6I1ehnfV3xd6\n",
              "BGyCOAaJILwyu+BvxZJ58GBfYRvSXXvSN1fO3EPQm4EAAAA7AZ4NdEI/AA+McMniP1yYgHL0tT+m\n",
              "kcawt3QCH8CcIQEfgdp5Zl2v2U+aaLgZZO93EhggWaOTnsQMDpkAAAA+AZ4PakI/AA+LmxMgm3Y1\n",
              "txXPDvueUCouglpIa86GVXBMloO5A7vZEbmum+olnraZ9uqfVV75KBy8SXZ1caAAAABrQZoSSahB\n",
              "aJlMFPDP/p4QADDrsI1TaGfHoplwFEE3kKOsAES59z8OTE78gfzKE5G4k5bXpHL1EfxfBAxj/qgA\n",
              "5QVxT+/qToSX6pgX6ZjCjvnRVh4YDT0RN1WauFq5KuU3HxG0sZUb9rgkNcAAAABJAZ4xakI/AA+G\n",
              "euxp95kOlr6vd8UGOVStXQatHxK6JN/loChQFQM92SOnhR2sFUQEhhdXJky0Dir7lZat3ACA1RSi\n",
              "gBw2YlQEnQAAAE5BmjRJ4QpSZTBSwz/+nhAAMTwnOs4kCWrHmS2LVsuILSUbE5sZgRsENoFWH7+U\n",
              "ZmqaahqohLYXb3EOVdD9+PhbNbrLEKh/jjE9Z74pvVQAAAA4AZ5TakI/AA+H8f6eB7rjGtZRtsO/\n",
              "gYyx71RKTEm2zv+Xb8yjTylMb4xPw9xVxduZgvWEOh7iU2oAAABdQZpXSeEOiZTAhn/+nhAAL6vQ\n",
              "3xADN9a5jwAwgoj3ZdlTvUgplES4B+lHaZpTpth2Ak6zPyvy59aBZakvvHjEoXJXPGp/Q5THORmm\n",
              "4a/rHcrZ4Gc9hXu8xRVQHAkhAAAAQUGedUUVPCf/AAzfkG3AhidR/7emllP2X3fLJzL6TdfmH5EM\n",
              "BnUs9k4ezKcmhiyK1WY4Alh/DAfhI+nXoCppHO6AAAAAPQGelmpCPwAPKACYDtC5i9ZLnv9v5zQv\n",
              "L/6RP2T+BPkIyYJNRr0i3+77yXF6kpfXxeNl38iV5pi9ssYxtOEAAABuQZqaSahBaJlMCGf//p4Q\n",
              "AC/8JzrRaQJaurWOxPBXZr9wUPeYY/dzTAj8ANylk1xZducZSi6rXit4HxgNsE4tw0RxzDEqYI5w\n",
              "WqiCww3MdukjCCqP9jmticlq7VFnMUY88S7JDt7GMZD3HF6N8VcAAABGQZ64RREsJ/8ADN+QZpbM\n",
              "NnGgVbElq8B9dn/Ila80Rt/c3WHOPg4wQXTEhRFPSd0qM0gYoixieQZqQjuc5JKKHTLLbbC2gAAA\n",
              "ACkBntlqQj8ADy56qln6zRzxNH3sQBqzfbTzZv0t/1LcJ3ZMB7iP6uKb8QAAAGJBmtxJqEFsmUwU\n",
              "TDP//p4QAC6KJYvuAH7DHk8VWLOX1OfVG1rsc9t5xMQJMUYuBkhxk8h6BwiaC8mL0mi2akyyNDUb\n",
              "zqfNm544rIhD6pVgr6Grl/gPkHi6E36xW9tusUA1WAAAAD0BnvtqQj8ADtZ7A+KSISLbrdpi1BIQ\n",
              "wtfBNSsmk+BuRH0YA3nxNW9dMzrdnXwS1xyDjyHlWlpbzA+zqnpBAAAAXUGa/0nhClJlMCGf/p4Q\n",
              "AC51xypBuUtZEzkP6YT75qnIVxN9hDZxJP+RBHH77acHZLQ/VImJG8x46WKzwS3+CzYIhWGfF96B\n",
              "YNmj4itJAPZYtF8NFnRiVYghf7ypgQAAADxBnx1FNEwn/wAMj5Bu6PRE9YEr1lK/IP4WpmtBxAba\n",
              "o8kAT52KVgl5JT4rUCjHmkOVJicPbxs+vil8YUwAAAA1AZ8+akI/AA7WewPikiEi263aYtQSEMLX\n",
              "wTUrJpPgbhz6axNwQC/mrH+TymtVRVSvmCdY/VYAAAChQZsjSahBaJlMCGf//p4QAC68y54nTNOQ\n",
              "Af6hThvoh/4JMm+RcZKOICNVnlR2asxRQn2Ai/w2e5MMPfTSyya4nVkfCqIBDwPeuA2NXL+qF0MS\n",
              "ZVXxac9QuhiXvGTBtBHmCRy4PN4stVAYjtTCu5mIrvGIJuA4zcDisEyS9ma9OwGfilueRRArhZ49\n",
              "VDuKKU182kBAqLu3B7+h4+lDTCTQpIEAAAByQZ9BRREsJ/8ADI+Xxqb9AAgaX5+wLcWe75lNlB+7\n",
              "q6nL+fR/HWN97Y4x/H4GKvbttcp/MRKi94kILqDhAqUKPkhV2B6DEbwIte5Y/0c8DTLzdMhgCkiV\n",
              "V+91/2wkIiYkk9rHRQtHTUmM0Kxl7SqXgCygAAAAQgGfYHRCPwAO1YNzFBczZGN/AKSgb/NTtHT4\n",
              "d2zWPeP2D3tYXUM5kqAxvu7JBo4s6n2kvdekGEkRBLR256S1gnw4IQAAAEEBn2JqQj8ADtfyAAQA\n",
              "IE+xFoCmFSts5ltVs9mOEyEtRq+dhm3yUG7oin2ci+jQD9nLflT/e7AqUHee/18bYGfxwQAAAG5B\n",
              "m2ZJqEFsmUwIX//+jLAALbUaw3AE6mtJgHfri5RMwLlxAl12gtBTIWJn9i/kQTWzPi/hZi41J2Ct\n",
              "7+h6fg7QMbP5XYJtSSZwVOnYuq4c75rcBsi8UXkkZXzcsYLubJ85goQn3OECTBOQP2MPmQAAAD1B\n",
              "n4RFFSwn/wAMP5Bu6PRE9YEr1lK/IP4WpmtBxAbao8kAYNU59hPDA3IFDlPoW0Ug3oXHoDGM6gc5\n",
              "KJgRAAAANwGfpWpCPwAOfnsD4pIhItut2mLUEhDC18E1KyaT4G5FnRgDOe777i04Yt2dfAQRdTJq\n",
              "6u6T38EAAACoQZuoSahBbJlMFEwv//6MsAAttQ6iUDQAz4N+Ndio0mSd+wT7eel7pFkvzj3WkQaY\n",
              "3RebuwXFlJIDymDMtEzCMqQs4TNmBQX2h+23dgvhthNidDinEvy4JsGS0XELHbRrVPHJkfxW+7L/\n",
              "T/7R2/4/qyL/3V/A8JpH1nZ7r5X4PBU6Ku8u/Pque98sXWvwMu+rdBGCoBCApaf6wW/bJcMlBENV\n",
              "5am3VTHhAAAARgGfx2pCPwAOg5sTIJt2NbcVzw77nlAqLoa3nzk17tHAytfqiVawsx7Vvw0cnA5D\n",
              "+XQaEpwgUxb9a2bL0iRB+DTOyw1MBlQAAABiQZvKSeEKUmUwUsM//p4QAC2cy51nEgS1WTkyQ1MY\n",
              "4MXh+75fUkto1IcmNgTQJDFgJoHqFptMOjXAInLrnBt1J6q62OrF6AW/SOQWFW1d8EBJqcuyQST8\n",
              "hzz7qrsEZRzI1IAAAABAAZ/pakI/AA5/8f6eB7rjGtZRtsO/gYyx71RYiQB8HN7HzI4Dtk8+2jrU\n",
              "DU5q8/kDyUGeTKpy874RLjTjIe+BlQAAAHxBm+xJ4Q6JlMFEwz/+nhAALDWwqQa4tY4OQ0n2nNyP\n",
              "oFgPkIL1ih1bfVI4PzzWJeGnvtJEYT6Tz1TqAPNcd5aT/2hVBCV97GH6K8jHbpscAwBIQdVHvqR1\n",
              "8lq73BemlgheSooREt5Z/j4Jfh7weFNIKA53Ajw36qvZ/fTMAAAASAGeC2pCPwAOJnsD4pIhItu9\n",
              "uk4s5naL5jYabDtZi1r/w+wQWNPaThUXQKR92ilF2K4jRP+93vX/Ra5obIwt502g02+uwJgNmAAA\n",
              "AKJBmhBJ4Q8mUwIX//6MsAAs3MuQKuIUwAqs81GWW9YLuPUaRzOg9H3kkeoxCxR6gCKmeq02Seva\n",
              "KcwmTtxVvo2imQTrcGz7A1z0+JwGfRhIFzOfrMLEYM6S7byZpfITZI+lcBVhO9oTucf0m/SvPlS4\n",
              "Yg/sXgY/OpLkScsYmslHn5KAyFlpsd9tBoQiOjEdYuDAhCq4aplAkmCHI4Epib/Sg48AAABaQZ4u\n",
              "RRE8J/8AC/M7R3ZhHeF6rBJXhY2FbxPt0Y8pohPzvBp6eQ5TQoFHtmG15hH/u2pK3z4e/j2IQgiF\n",
              "oSqDbbhFN6mof8ytV5brMzjqbtElJrZdKqQZ8Q2ZAAAAQwGeTXRCPwAOJYOB0RAZ6K5HRH+ZINpF\n",
              "nqvpedKnRpF2UaFvvzDEqOEjswNUpFTuo5O9Rc5XTnnqHwAxEaEFlzOAoIEAAAA3AZ5PakI/AA4m\n",
              "eqpZ+s0c8TSHVEGo2uCfQI2Vz3mOy62K+fEhxDpjcxEQ219pIgQ4ynfZvBgG9AAAAGVBmlJJqEFo\n",
              "mUwU8L/+jLAAK4nP/xjhbJhu0w9nzD4KaJWGe/4EccEXP2cFSIVKwHbZfMWWH7u3G0tzRE3ROXvU\n",
              "uDCe7KGJPXtyCVgsCMf3VNtLczhG046SlD13/6En3lI10Irc5gAAAD0BnnFqQj8ADc/vtRD9Y29n\n",
              "lxQOYY+zFCiH7oFB2aHBBOzaxLeAPBSAFnfPnMrJhVRkJ4kUZdVKOa8+sQFNAAAAmUGadUnhClJl\n",
              "MCFf/jhAAKfGQF4e9FxHa/YqB+uoMqW9OzUmHiDRrAnaVRoiMGekNuZE4ka7jGx7qrP7aq6l0u2v\n",
              "xOR1qPioNFS/xn13IpFt8j+22yaZj3J64td7/00Zo45nLy3lU4VjYlYwJZP/+KSI2UMp2R6BP6xI\n",
              "KcEfshE5ukEPbWXf6cS8etPa8JPxVlaZ8aof+IxUYAAAAFFBnpNFNEwn/wALoiRtwIYnUf+4vqhk\n",
              "txf4/ch0jUK/sGE95urci085XYX085zfWyJO6hFxWTIFu+SlPgovSdXTnRKHbkuYyjqMhDO/yAqg\n",
              "6YAAAABMAZ60akI/AA3P76NMWCEi274+BlN0/SjMqTls2R1ARpBvwoHHZTJFsPrCz+kvkAHJ5qzI\n",
              "mfpjmoAV+OhdweOSvg9qTpFRciCXtIwtoQAAAKFBmrZJqEFomUwIX//+jLAAK3TOsNcojIAONl17\n",
              "yWI1T77MKIZ8ASmmFogltwn2kaL1FN3sBOq0xHEWxlOhgYhTqA6JcZrLnH5rWGqwypAmTfxIwlCi\n",
              "cSLnw9cEDxJG4l4BTghZsZnxg61xQG3kLwQdu9pmE7xBu//A4nZjcaF4iLuuaHUbTjNjOTrIUJ7Q\n",
              "dbk3FA+gqK7wX1wS5OkOJmMpTAAAAJxBmtdJ4QpSZTAhf/6MsAArdXCC3z4ALDuSobJto5wFG07+\n",
              "3O9GH8zy8THrPSCSfgzd0/5lSerVmLm8wH0Bs12/hrR5A+WmIUP3Djd/Ixqv+XVP+Yo+Q6C4gGlL\n",
              "TMLhCwBv+//4GpHRPX467tpdz24Mj1hMkJJTPhMQnoJzCBKrOeVizhFddV+TWU9IzqHfdvZoAwmh\n",
              "mTOFV5M4BG0AAACmQZr4SeEOiZTAhf/+jLAAK7zK9T6F/ABGQldipdqNSvek0Ac0xyM/mzunZgTa\n",
              "KQvc55KbHlaElv/gCebk+ItcawAZBGaQXMgeV6PLhYc8+6z1yeCHe0aaTPMxxe3vsBXQDH1ByCDX\n",
              "7Q3hii0cR3ZZol3Y/3REyji7OBlsmp3lywWUbSBmco6iSYNGMsJUquLm77nr/whZOiPDbpe9xTy7\n",
              "IBy+TgJTQQAAAGhBmxlJ4Q8mUwIR//3hAAJ6zxy4ADjeXG8HZanjqve1CQF93A/ZtaXsWY6PLseY\n",
              "ni2F5d0XsMVCBuuJAdvFL+1AyrETNivGLM7lATRsnARzJCs3iQShpWWU6FUIWRH2x6nvoDxSG154\n",
              "wAAAE/xliIIADf/+9vD+BTY7mNCXEc3onTMfvxW4ujQ3vc4AAAMAAAMAAAMAADSY0H4zd2rDhiAA\n",
              "AAMAJgAGUEDwO1+YT11btDVDXiBfpt8IsiXMbYiOydZqPhu+TIJJQdezCgF93loiP21TttBsPG0A\n",
              "yQCz6AZ7GwqGEg1/meqA4frj0+3l1l0Hlx30NbPB2qMn534iffCeU2uDOIgSbqCC9DApmL0vlqen\n",
              "G37BVh0RpRESiv3EOiSmkWSif5gZ0NR7itfNbuIXQAhFYAqn7zkUZBjtiyKvkDx4B2R4FB5Yl1bd\n",
              "LikH6Nswgv0SphkLD2y7pLnJ/NSU4eUVf6bbKlvfG9AfXTbwRu9Md5sjF1o/GYDel3E7hZWE5fgt\n",
              "aP8wdW7ZfwG/7tA5T3tr0WADIXaUKUucpU4jjPvmwgyNGqYgudJmx6cgsyGqsRu7pAAAEbEZ+xKZ\n",
              "pr9uz9+6l+4DZKTo6f/VLBBzZmsRGqRXc2CPMEzfKMXYQjg9z1k4ByF80092+Celr4jvwV4aPeuj\n",
              "QxOy3sinJG9RWE6yi+ZDj1iz6qbFTFdFvvkFbjLk/mdahlBpQXutqlgMjT6gRAAtLfx5CtuPHOxT\n",
              "S7a3HwZDAU27mMU7IDGZVofQJMR7aZKIdu07ty+JCqgG0vYpGXwP0zHdCNEAqeUkK4iLyvAC0Job\n",
              "XTzRR4G4YCVm5Q+4mVcTJoc+UyyL4Ks/IrgD33r0iX4/kJiMXAPDHlKtQ7JOYrvRbD5LFr9RzyVy\n",
              "5eU7qkvZ21m+77wDbKc8QeewO1ArKb808DQs99pLE4L22VOWsBM56wLCXb4xhUmMUR/AEOtLCtIV\n",
              "oD6/R/Ek+FPHexFOz1et4X5qUWUL98dwVRbXM72BzhA0qPxwRwLrywLkvtFh7iplZc7+AAClH8aD\n",
              "+g0LyCCNxnAZlm6Nj3MFuEKryiJ0yuvLiCj8KnRhcaQ+OqwjuYw8kYCKlrl1saQOVA4PA2Qoklzk\n",
              "SEIsjea2oAR/GqR2Ik8llPDMnIvA55KdFR+NcPi7SPOBA0Y63c/ByfH0bubOpJQT3CQR+erJuXOi\n",
              "EuH7/chhPKru8Ohk5/U/bEXmNf+76t0rNz77IKPKP6KnSG7tQLHfSbIa/2nBwznzZLNG/i823rQ/\n",
              "ebnKB0bv+8ZOJUmMJFTqzqSMdNAlkGv7RTx68A9XHhbKlkL4v5wnFyTD86iJVHHJcQyQd6xBmE9l\n",
              "yb5VfNIXhFO0ZEeCm2IHbDGRobklp+s6UHnVNPWDr04A31HpbS4BZA+O3FC09JcZOwLyQNZ8zQSN\n",
              "TZ0/GmIhg9LJo+f8TKCpXBTUznX8kVgynALzQwWn0KT+mglx/SXuHzTUFxHuSR/c/hvisPGJrDOp\n",
              "XJuMwEwFLiuBWBtemzf5aMn9mzS05NAVmCEACa/Ypj+UAuD2S8I7Pm6doU6ACQ9krYRdUn48f9bG\n",
              "oZIqxijDeUZdsI+cxPlaHIBjp8D7wqclNSkzcDfxkoIKWslw/AoModKRr6ZFPNyrHA2iMkJ/ACAE\n",
              "XLgNSng8LIJO3wE+5yTZLVm5gP0qqsfNCGuvmfFJGyS/y3ef9XzvDY9iAfF5BmhgTKxBVcg6qHcZ\n",
              "aty27m4LZfWbTNqWsLAtyb4LGQOlMyx1/vD1Cs4fv8MJa05vaPXb5xX3WVf15h8iOAl+IABEFXss\n",
              "mosmqFfbMDZHpMst8/3nKsfKYbeRseb8dMG5kwhSRJWZkN6QvLQHkoh6GNehS/d2lTE+3Eea7xaZ\n",
              "5j1WWptxfuifQrJGw9Km233oTeD7GmFWeEQcNSUqX9+y+BQvG/bo4HApzeOsL/OkgT5f5UsXigyG\n",
              "ewNUM2GhRIh1Tgfsr6eNJ6zRyKmW0D3NNKy4e+SisfYv66LUIp//iC2Pt6YnJ7RZNmydnEJM4Y7e\n",
              "I8bLJHeltxFFkI/5bPb6M0UKAIDB7berq5wSCs/Y5g58/OZuiU/H6aPe+XKhBnYLP99riugo+TZh\n",
              "Q6aK3nntryCSonwnP+PodLX9D8bZOIj3Iw6VomM46mUKjeKhnc8TKnDaBM9jwGu6y5QLIiSvbZFH\n",
              "V35n7DZrLWvxrjtDb2rJw2piPOp8SjHz24zoI1qIabQhBnCWzWI6OfCUNQtID8u0G/txoU0AABDv\n",
              "SpMOOdAYAFDjNFJszU1MOintdw3ImieDUgKTEkW/Q1ajVS60CaUTFYk6PYtuUvGW4op8+DopVhU2\n",
              "lQ45fZlZhnFnARSkT7/k6wxG7Z/rspbFV+AaKPbxfrcPFFLJWCKKPvEwlJn8VhktiBcUJVaY8Meb\n",
              "WUqBaLcxw3yDYY581xdavuZc/p4XqiALwV05D7AdqpyZcMNWwwAwdKNf9VeenjCooXsfA0Con23G\n",
              "Ne4u+I8DchXbAmpHDUf74C71FeUUqK+jqUVYUFxpv0B/mwXdhch0dBV/EAeLIr3Y0PbwC5WLuLGt\n",
              "ggHem20kjWZR8oxMyUr17TPJaTzB7Ee8L3vVu77kh93iwyWYIXU8XL1ga3kwvaQIGtYnB/9DH45p\n",
              "cBKsQoApSImdNOc4p52AFqDhx6MrPSL3sApfvW9d6jzzRXaW6uW3QZ5020UY9PQdmcaXlmuG7aNA\n",
              "8SB/7yxKz2K4pzj/8wVIl0l4KOJHrYb3AphrU/1QguU8jZl1vsNOr79pLE5yE2uJ8v9ZqOhKfjk9\n",
              "Dp4+ds7H5v8YilOP5bfiCtZFIrhh/9yYqq6kHR7ULiyYiNzFhwcERgAN1poRFb4et1KT1RHrduI6\n",
              "CGVhOkUPn/T69Ol+Tx7jfiSii5Ucz+NvrZuNpcVUzcIvkECHLuIU9pW/HC68uzJKv7R8CQuc4My+\n",
              "MH5Nhfdi9HGuSHM/rt8anqPl8uG6AsWH8FATxtJmXrGJ7LFHdrsAkPsRx/ZGv2sljb14Jh9ILBy0\n",
              "w/u3RysbF0qgN0jtEvbMfvD+WTh3OYAJXRySGTLcoZKLqizwiM06QnSrQ9yKggT4PAKndqzLUPFx\n",
              "JBTONV65sd7wO8chpakSMaoVl1OykzljXAHqwUF4LClhngIbK/5nDqe2t3uy97FBwiZrRmEYmEAp\n",
              "GE2un7ff/R/zM+iHeltgVOWH1eO8qima/Z4tn//bpicsr1m6+05VvSP4nHaHte+rzLKdlLO59/3J\n",
              "S2WbMRnlhIadqXXJgjB29pS715jxlM9QJMmo7o7B8f8EOTyYIZR8batjIZmkilW0s6mbRuK0ilX0\n",
              "e3n7fLMr3XoSo4SQt/h+UDBHvfwc4goTYK1vDjeqlnh8vkNspRN2XgOQAAE2EyM6Qge10tCF6H8a\n",
              "rCd0oBXDGUNLjTyRauc9/MbY5x0Fho+g05F7TK9Omrhec4MEgG/p5af4CYjJ4hlmoTv6lz63XWjM\n",
              "A27QJ2fxhCW+12b2pyTr5/l0yvZSg+FTs4mK1jpivG474nR0X8DwwIu7S1pLwMJdKKSAN3FJ1WYe\n",
              "EWtc9K7R6o+zEqBERLMJ0elHZw5uiPpdxe/q8nStX0TaWYMaPn0mr9dnEdn22LrUp6JlBxPSAM0X\n",
              "6V4qGlPmJuzdtfD8JS5dYBDGQ19ml7inpixwc+KfPu36DIxDPwC0ne66FImj/rqT3vOAAFCoo8MQ\n",
              "eU7X20abkC28Qy6nHiS3PROygsgDAVgUKPvDkVlL+NGZD+Y40llBOoAG6L6QUmLCCc/Advu9HG8n\n",
              "b9U9KPWFQvB+46BT8r3yiI/B7aqt2eG+BD4I2U6wDdl3KtaUBT3ksjQc1Wx1C3xQ2JSBDHaDULRB\n",
              "h1L/FyKAAXetpCV7F7Rv3kr5mvfPsH8LihM7oSW9FDn3+F4m5zdFQiLYM0ktziIhYbFeG0l5h0ZF\n",
              "kgbZ8Lp2ups+TN+n/C1tBuuyTJr+6zzpK+bVNYuSCIhNfHyjyoVczffYUiFiQac2u/Y30O5VEMZN\n",
              "s4Crl2rrG2KSZdH5ay8va67+0gVfuZCa6nwEz98OAkgu5/Lpox+KxaHXOWSv6SfLb+k0Kaf10rw6\n",
              "K4yPiM++bD0CJlGNT1KfHjuDqtrxXW4jhahNfifpUmlmXcgSSF0N3dH7dPBR+GM3EzKlNRogBfuX\n",
              "I9K1A8jSeh5Md0WGaFsny2c4JCYAw+l1huVzFX+sE4nGNzIn0dqC3mXyr0nyBc5CksnzRkwLhayz\n",
              "YUvaAy3qTXQZFAdKk/uloq2s70icV4c/vFc8QvYLs2Dcv29eswQG0YPt3GxaIBD+qWHqaEqBHz/j\n",
              "a5HX4KyvUk6IPx+dD1cLlxZXQquFDXnqsY2iqKxzPImAtXitADeOoySjmShxp/Q3i9D6ZJGprl5j\n",
              "ewEDSprb+vXTRsDoxA/7aYKzPJYmr4kemOzIP2uhmQWiJHkquV0uviZeQgYJymLi3m89NS6b7mkM\n",
              "HZIF76dXZb11RoBrPWYftRsNNmcSzDYiusHdfs6UfRftP0AAXk42Fm4NCCDEOK9eqDHhc/8LchRO\n",
              "S8ubiThGN1wICJascjxu9U1u5f3MlqHP3DH/SkDxw+s8GXU2stcixq70Q/c33i3J+njK9X46irDk\n",
              "MSbRfNdYQirGr9hxvI3SwpivNrdO+G4iZt+BVPFghTdWZaIZUXM31+D5Dj/xF0EvXlkjDCvuq8Xf\n",
              "3bXd5ycd7scT0by+v97/j1YrbmCcsJ5LNd8sRe3Jvxf/YfhfofcmLIaPf6Iv1FTVxXHAW2Nayjcm\n",
              "pt7LSt8vFNsOTBiT2HuC6Khv010Ow0lm5gDeZ2HaX0aPdiPVPKWmHDZem37n766DGuoOxZMuQHsT\n",
              "fsFdEJfljB5x10USdtfysG31CYJBzbF/sTfin+w3eOdzhS6A96RCGAJPigX+YAmZlqa3ld1YKTej\n",
              "dupQeW5EiSIIkTbM8e+iZrCq6p6rf4/HyOW5z2rlfXxSEtJKZIeBwO1EF00KaJSq2MRLeALsX6yF\n",
              "cqiAvEJyUiKJC4rgubRkxcmsrJ5wEMoUOetEqhdmBwPxBLeo259P7RGZJCTD0jMfop5kiupBQGsm\n",
              "+KkniKIDFFmr6epk+VHHIxesFbcSXalu522kAzDJCCwIa/psP4VtcLOZIetqYV0MDUCVoLuZ42us\n",
              "tG/hhg6ncU/gjLxpz8v4JDV1mBGMbDfDSjuxI32VLiBwWHbtqaIlM/eQHqC0WZe4PjQ6OLzqG9c1\n",
              "hzAHD0S8ikLu+Mg/g0zPjoG5+m+1HIt2yiCJaHMaOqffW8c/Z93WeIgVCa7/9xaW3nR/gLf8R/ZQ\n",
              "iXnoNAxXNIJHXZz3q3OlKcS0bEDZ/4Tgk1g00CgyJv3/Vc6uZjNpGZczGMukbuiQlOORWulJJnPS\n",
              "GLS9/m0N4CvfET0eQB73mI5fIw1aYRm2FsQH3xfvKrRHzKOqIZd5QnwGwAZC13QYKLeCUeqt/ztW\n",
              "H3S1zZl/pwjwDEWi9DvNi6hc2xYqMEmTNtx5IJtJui8bKymRwlqWyOdW2+GxhfkRurklJ/rQWXbK\n",
              "0VRLVcXWJ3hQAhq9tnLMqO24etee68UAm2QbJhh4UrJ56uMB8Qc3UA8sFCPLGW1BBFCLqAt4LU4O\n",
              "temnjtu6nOclRrNZ+1edp8bb5NVLdlFXm4j11izGzzmc78zZfgfCDibiT7qeklxYDy7EEUxP6oFl\n",
              "/rmNX0AKCHpMI+J6ydiRvm8hmlH9fUSf7L1FB7DBV+15Tt9IuABzxg1PaVvFhHfWumCkBkIUXU6T\n",
              "LIN5K7DkeJ4CZwa7IYBBztjH7Ma8qIQbS1957W74FTF//fb06qQjj8O1vNV4HcjNDsIGGuzIQRpX\n",
              "sQtldo8ism1r4pHBO1EaHTILp9pNiHsL63FzGpRqbc2uMtB9NpA7dFODzHNF8Sc2OrGChpOaerL/\n",
              "Y2DdDUYy2dWcF073qn+dwSfLVeY43liEa3Gym727PqXmsJbL4tr1t+UIpwspcyypYcW/4tVo33Kf\n",
              "N0nW3WQ67rDgM9aT7vubbAakMUHD7KqyukzL1Zn/HyoRRWfv1MpY5YBNhiRGTj4WxpzESLrD9DiB\n",
              "BrdbmZSMhvuE7u/zpCQAnZhORaZRU7l7RElNb9mvxFbV+WvHqtpWUhElSHGh7UmoGLCDMP9WMchQ\n",
              "uGNaYaPB6DCZDXRKLiocKay1zx/3mT+6CJcaGkVuVd4TlbEUARZPE1l6ynSdtqLA2rfODOhiS6dw\n",
              "jhnsEUoWZkCL3pI7OfSXQpRh+60HbUINjzKbdwhTEaBikmcZdQXA6zz3nPIlqgsII3getyNpkU3M\n",
              "Y2XvfMf/70Tc0dYP+U55HF77GIIW9wdv7DG8amGMHL+K1RyFIWk3JhZpdbTfrgRX1WJd/MKBpmcZ\n",
              "fQgSWDxd2UhrrkOHagcSiKI6bYECaEHCfFqh9AiWebJLg42Df9uZOJ8q6obvgOQOpXuUI0bmlwIY\n",
              "tClKKj0ei5hXKT/qdrrJ6is69I7qIyImsPIiJBJoMXpcjX4bVeiOFwD9Js+HAbHMNN7pRJX1EIjK\n",
              "MyuDTnoJ47lg2IEjfG8DBvlRXEeRkwdyTq936FweXOGXRO28gQaPCAJXpXKVr6pJw9VbGQB20d3W\n",
              "aKnQm44XYQ0iaYuyNmQDNf/Wax9fHc28X1pmoW2lBwtaU3E4kMH+8O9rsMqurGEBfh6YMYzKtHcN\n",
              "l6rvTKIf9aw2deEyPoxQykSFfd8oMFWJfMGN1O92fVirRMlD3US7nZRlwgXM6GZhU+/jX9leTie2\n",
              "0VQ29H0NH2n6IOt1UA5JzbGWVWRq8mjOFJlSQ5mY0v+V470qiyi2ZFDd6eZ/2fCEfCa6S3znMuzD\n",
              "R9iGD21a6PbgI/tNXZjTzKk4iI0tEz9/aPtyyJ8lvdHDwDHLcXfINl7jTh0BmtJ9EuzzTnFGiog2\n",
              "EqeQouP99UZm0uY1ig1UvOzNrhT0xvw6xhIRnviIE+d7Qm2yg0AvqooAAW5OAA6ZAAABOEGaIWxC\n",
              "//6MsABGAL9lgZ3KSul4QEDqw+wQD/jztoeXewvkQZY0IcY1KiEsm4ehw9Uqe2sT9sVlBBWqEM8r\n",
              "9HIARI+tEEu0vd+2m0i7t4VunrWRHalEsIjyFy4bIm8g3FW8glTW51AjjGbQh3WbW7CChz/BLwPC\n",
              "Yi3I9/z2vvL0Ehmxa9kgH4DCv1JlOAtTWFkgz+a31llqYK8WmTE+1TpOl1SNQmFJbOvqBjrAsvbU\n",
              "EDEL039xWGGEgW/93BN2LUyXbetFh3aCNuB66fMtbxANdCP65RHoUGBdxyZlAtIEd48bdAxU0Jtc\n",
              "v1k4WeS+mKLHBMGI1G6VupJTyP/7pOGn54DkS6AlRaJ8Bi/jqbC1U3vuwSGGKorTBHFSyNjfP66j\n",
              "A+v05jtBOC2rZ9zOtadJr60vZeChdgAAAGRBmkI8IZMphC///oywACpecOo8AHSErsXsQzoq3KJM\n",
              "G5koCQw7z39hYBPU7a8YepNA50pTm5wD7VhwqiudFkloR1gn9w8v+sPKHDw1xGZck9cDsewk/d92\n",
              "os61DunBpn3RoUtpAAAAdEGaY0nhDyZTAhf//oywACpsQMV1nqAA2CrM6rT25vOHAI12y8QGWCW1\n",
              "Q0lpXTPhdRYWQHeADks+2bYuDuOOkxN2Y/G4aAELMZJrSehQbDaWsh8cjVs8ktvp20gYJsRvtbsT\n",
              "jk9Re0t/ZHfARAktGbmB2imBAAAAX0GahEnhDyZTAhn//p4QACoMjyBTymYvI1177EqZ0xw+hAD9\n",
              "XpHCm8MCXRrlu+i2c4/wjSPyw8AlvtcIzreRbx4beDKCxstLBcQ4gL0L8Zw1rL2KAsFzhR6foAyE\n",
              "DSygAAAAqUGapknhDyZTBRE8M//+nhAAKgyPkjgrsPPsMwDG+RK6wvZrfkM5gq3Ngz2sfn/gUl4K\n",
              "1sUjk9zsKh4IvHcaW/66dOwLebTikmimS7noKaa/CevaKPWiv3hMVNl2R/Ecgr/kGLpHVDfMul2i\n",
              "eUQZUs2uCILH+dA6WqViZJw426/Uprb0SPZJKBWG30o0bIAFrB2XA6JD+z6jC2Ut380P9h5cBG9x\n",
              "dq+ewe0AAABaAZ7FakI/AA2BMv7IRS7GOw11chd5Rlc5VIULcENgAeK1UX6JiQaSB4Be7USd7pno\n",
              "5cbUybvHKL6m2eVOwuFS/LduOHlXOP26M0ZmKhbYhfhmnQYKIDGUugalAAAAfEGayEnhDyZTBTwz\n",
              "//6eEAAo1bCpBri1jg5DSfr6MAnYwhO2cgCeunoujx7mZ5VxHC+8tgDX0IpaQOdd3moor0FHYyzt\n",
              "hxzl68uy8yvj5EtYXHG4b1VOelscxipM8VcTYxHaU1mJ6nYBbpwATAIOcxU626LoEOrk1BFUKCAA\n",
              "AABJAZ7nakI/AA0v76NMWCEi27370bm7g05fS45Dho8plLpPr4/+26hJzc+kK3RIE01Hvy5Ebos4\n",
              "z1FCjL9kfTq4IAGUd71tjhAqYQAAAJVBmutJ4Q8mUwIZ//6eEAAo1dDKUVWaAAdfuHHwz3MBSeap\n",
              "gxjKBkTa+8KXwK06/oDCYubVK2O776J7Q9uUKAwF/lhEWZZV66zLdW73yFjYbkrJ1q5O8gJv6iJZ\n",
              "LnHZ+HkAxgUXyBuYI+ulwY3wQ0ODFtGBWyfPsDfOTQa2S8fkaEic04Cj4gDXF8O0VuypLgyUhUdX\n",
              "HAAAAFJBnwlFETwn/wALEiRu6PRE9YEsSt8EOjGhfymNhQobYRbImvsL81MUPls9ykfQwsxW4UG/\n",
              "0rYh86tVfJKUO9LHa8KEXAiMKfMkjA31b/AT0yLbAAAAPwGfKmpCPwANL++jTFghItu+PdSp9RDb\n",
              "WYiQXQzsb35bsnBINgMMyPvmTd58X2wVF9XN4U/8VHUF85SYc5qB3QAAAVpBmy9JqEFomUwIZ//+\n",
              "nhAAKR8BgLpQAuoT/wiVbzWuf8EAM/J759w0JGYrr1M8NUOtI/XZWgPb9QdtLPpvR0JnJ1Z3ZR/m\n",
              "BJP9+ldGe4rMo7aQi4N/tZzyv11uYnK7W+nP+1HxdLrG9mc3oA+OpOhY0zUQKPU1CJ3wv4scheuP\n",
              "Kv6XiX5elzVZ3iwHUwk8Hpqm1HPrRZnrWlF8C4WoyFDCZcEQlT1neQphL4Pr1TBjD1BSX2luRpJ4\n",
              "QPCdXx1xrE7mOzUbkUFeLiG/KYKF1LycNkNBeyXxTyX+qZqiTisyqltkpGIa7UMiJVQm2yrb6Whb\n",
              "/u1+Y0Qr96JD7tPgzu2crcr2bDdPrUvVwSBsPXfO51qF2bH/08n7XwZLgPFBrEHvrYHWPEHsthN0\n",
              "CoAJ2TCSylFy04XfHGE7LkLjXuEDi/YPmijz7sNFfGSVoixmuGlt0l/KyQ/EYEl5AAAAbEGfTUUR\n",
              "LCf/AAsTKRtatxrvVmuwrl6pf/YYbbb/x2iG/NxRE/ijt2ONc8XoyDBfE2kKlN017pmVsob4gvGq\n",
              "U26yCcxk8iwuNVhKIaIAgeh62eNN5gyrK+1vm0p3P41rKRWDtU25g44uupApIQAAADkBn2x0Qj8A\n",
              "DS8FGQDYUCXSt2Liw0alweyEP7i4l65NTfMvDYE+DLFl6v8lyXGOQPBS95pIUk4QakAAAABTAZ9u\n",
              "akI/AAzkT8bVI4gKvf3GhnO9vRtyFi9bkKB6ohwhCKG4vQFv1o6pQMACr63H13hcmrfC8hzSRE7f\n",
              "bn69fEMVsT9cdSx4psVnV3+JYX6QMGAAAAEiQZtzSahBbJlMCGf//p4QACfBBA4AJ23K+CExkJTC\n",
              "3eeNUe/jxugxK59Czx/twK4Z5kFKDmQtfbrGadjbyXzny+O13eo9w6X+uS1W0L1A+74O/zWtUdHM\n",
              "n/6nL9KkuYxBHRtND9/bDT7YgOqpkJGa25Pz2xdYay9KOHQkfF2ri3h/bgKh0aFVhMSHRlYS1Zlr\n",
              "Qgk79JWxfbkVXSubrBypkEw6ezGnoKw/24hB7eiBrjXWzNbHXbscU0u5zg/tgoYWcL8C7qAWfRu3\n",
              "FiTBvfSYIky66T7e5+k2oqQBA//7xgCKZAf8vY2CFGa3J0D5Ryl/3kvvegnI1gJZ5xTasEPyJccj\n",
              "XOxS5ozN58FisUW3o9ZCaR+2XjfumgMItifh2E8bS7kAAAB4QZ+RRRUsJ/8ACs1KtZSFb98GrBQV\n",
              "359t1oMuNymehCcuqGXE192tv1cWCJGdrxhmmz3077BtDMFaCxCIHbKvvb14ru7ubCqg1r+LQTpu\n",
              "9MwliiRoPelLPrz5O2ZxmQ5h0GVdeidOrJqtQ6KbA8DUmGNaxRLfsHpAAAAATgGfsHRCPwAMuaJ1\n",
              "Eue99s2o94DGNZaeGA1nBz9XNeynIiAoB9rb3YWn2D8olQnjaBpYqwuOtorzc3JF4GYvONt4aubs\n",
              "ZIN2gYeQbN4u4AAAAFUBn7JqQj8ADORPuGhZ9VYP20As2d+cUgaYCT0+b+POzQfw3HCTCFWuaruB\n",
              "ajJMsspTgGW7JHSLguQa+xZV+VdXFtfN3/gXse7nfxBEY5O1g092EDehAAAA0kGbtUmoQWyZTBRM\n",
              "M//+nhAAJ/8XoOL9QFs8QMgChLKEE59332/4nhbIjYt3JUr2UbfLCEVjsFED25104h6h5YSvIagO\n",
              "V3Mxl2oTUYelo9Jcpo61YyDGoWG+kFJnW3gamfMUNxp8LQzUKR/bdR0dm/lH60Mma4IAiT0Zolam\n",
              "hw/sJ3czIxPobOwmmVU9K8oOP8olm/ZNyOEgH7chV3AqMBN0kPh+TrqaD/No41zjQQxPZLIQdMqi\n",
              "mlyUIJRdLp3sAXYuzfEO5zSmVZGvRfFMEi6iMwAAAGsBn9RqQj8ADOEy/snHxE9pfwvWE4SWUzXv\n",
              "GYq79bBvp1P+F//SPJAt5xOzXFvwZZNOKnfxrP3CHr5M6V1+pds45qzRTmwa2ZAMe1jt8oZxcfEv\n",
              "vVUgzwrlzcf866cMl4dht+5eZM/VreNFwQAAANlBm9lJ4QpSZTAhn/6eEAAmog8eSACNEM7L4u5e\n",
              "Muv3dgQEz6n7waU3fQVxVsyFmv2A2QCBXNfkWUtVjHojYCPneGk03br56tHkv2EBStyPXJzI2m/D\n",
              "5tWemURaZlKfjbd1YvzLexVWEQb3lPYlG/hW6+z4Pfw9Hqf+fwLdyd41HLoRWiBG/ncnIY4/RR/7\n",
              "4c1Wxk8bUy/lhyXK155bpf8U/90Tz8l0wGQ5eUtfmqKb7n9+ZiAnZKvKlayQvcI9HdIwHsFj/MQ4\n",
              "ejbW6k9/62+EqkW/Gsys569mAAAAZUGf90U0TCf/AAqCJHNOfl9seZTktwyFKvTaQYYWKk8R/LPB\n",
              "7bcTjQ1ESSedpvrB+QYv05oeThP+ZRcQRA6lpEBH+35CitvuZnT3UEUDRZqotBq7V4vq3yQ27gNc\n",
              "tCgtXvVoEhcQAAAAkAGeFnRCPwAMjwWNsvymg/bixgADf7gDkMCop4pzzOX+hKYxnoGkyIVBVHmR\n",
              "jNoohKzvIdbiKtVklS+fcq2FWhFUgdZQdYUq0LD+3jK3nkZqSRXHRiykmg7ERxcd6U30mZvK0rf2\n",
              "oiQ2kGDezKucRbP9wtN5QcB5vuyafTkhVdHupge1eHZ04KGAltM/LlgGpQAAAEkBnhhqQj8ADIok\n",
              "mPsbqw8d7Nu4VkL43mD+tlWe0D0EcbSPjfszbSUVlrCSCIoZO5fYctQHVHYOhUhioKTVzZUbiLH3\n",
              "yGPhhE7AAAAA3kGaHUmoQWiZTAhn//6eEAAmuaQQLYABdQwduAF+LJxOjKBKGQdncj2Ubh6IdL6q\n",
              "+H6DHDX4fVsaKyLHh0aJbkLilxYhrwFvovXBdtbR9BFUsKMI07vxpa2ENLm7FR4tffbyNnnzwMtZ\n",
              "Qsh2/7NuSZ5LNWaxWb7SNLz7PC8DPwm+hZRON0omiVojARXsOtRbZa2iADsFpHrv2UY8kc+v8JUc\n",
              "hFn+MEbK/4P7+TvPheH/k/n/fuArlqRg/8VtwTN+6ib7Sc399roaCEJ6uAXGxsB6j5gff9EQoWJy\n",
              "m6AZ8AAAAKNBnjtFESwn/wAKgivJeRmsQzNtVzlxgCFbbVbibCWrZNZi6LAiFSVfD5jyFSwW5Khr\n",
              "cRlx8Mu/wJX6WziUbfKhRIzTZhMdNk9/lrnPpejFmxjtAOKTfxx+qGTHZJX+tRmVKeYQxmvFbmCd\n",
              "+hm3DygxrDyWd09Ao2BE69LPuajLN4j7zWNjBVqNNEBN/J7qK/PLWfa9psGJcsr9fkIw9OfCbyGF\n",
              "AAAAggGeWnRCPwAMkrYa+j4muFFaABv2xkrvgao2dpnFXX1K1f2kjOT3ZKAvx/HYIDlV1B9vZ1wy\n",
              "GBnmCmtfBjbB4DiQi6lFV6dey1OtlSlfbWrYlNjO1mYgG6W2T572LqZGX1LNftV73zHwrbyM9s94\n",
              "FKMA9rgCSOsup6h0b9xNfDumScAAAABBAZ5cakI/AAyRMv6eB7rjGtZRtsO/gZC1ymEdYgFqxzyy\n",
              "z2s+TsApbYGOZMbe9XU2aoSmsb/kVIfxc9CQkHFW5bUAAACVQZpBSahBbJlMCGf//p4QACWqmw4A\n",
              "J2352p57mQlMLd5xM3M2j0esZuGanAuQrNQSIb5GUwkneq+kiSt35llD4ozcIn8+KVCYx7ZhK5YS\n",
              "+tTpYtXuFC2VI1UirhtpamDAqNTQ8Syt8IT1fbisc62wGSfbJlkwAJeRYuEOIq3MSEen3ueKqN9s\n",
              "u2pM0+jxWj0iNnDNEd0AAABhQZ5/RRUsJ/8ACj1Ku2rv6FxgAXXrF5HnaEbukxm82zuc09OnnGKL\n",
              "4Av3OiVxKa7daAKOBkQThUSDTpPHxr38eOM7/UGLHdAHeei+NElZk83z+2KzoEkRMoblmVpVEEca\n",
              "0AAAAD4Bnp50Qj8ADETjgcVV/UDUG9pYK5Djtf+BoBzksw4atgr66vDjLZ35AxHgLZ4cXPycDmgf\n",
              "rpQyhOL5gu6UEQAAAEcBnoBqQj8ADERPxthDQdWi823HTR04BDFFbVL8pnQEU6SfaTcwRRfKAH6o\n",
              "usQrfqbidzzY1qSc01po2TKoGLFgViQJrDcyTgAAANpBmoVJqEFsmUwIZ//+nhAAJd8ngN8kAONv\n",
              "zqD28rbt9AndteARmAYKscC+QHofZyq1DT7/FPTWCPF1JNEJRdN1xiLJ2y+L+d2pVMl57+XeIoqc\n",
              "lX0we1iDf5j6S+qSxeoL6bRN4Do3//9/41QaFUFp/UNHAiR6hG6tP+eH9oGW+2meHEZQlMvWu4CN\n",
              "GGNNO8968SHy0/a9Ci64zTcm41ydJsYFzEmUAfC3vaE43iVUBOpTRa5w58huYvMRJ4poKWkh8Toc\n",
              "UAxnWHIrpzD8uKdel6cRkilGeoQoIQAAAGBBnqNFFSwn/wAKOyR7uke6gi3j9Yfk1YfLab4TDE13\n",
              "xC3fBPgyUHHkY0OsBuT2Nsy7H3nsrGELiAm11s4YQlwnw+q5jBB1ZDSSxQXMjskUKKzrUyi/BzSt\n",
              "ByYyLElOAssAAABkAZ7CdEI/AAxE4164mhawbz9CrqaCqgEWpnxnkRhTORbb6IjVbPjYsj8NO8//\n",
              "eEOthN5mcmWTHbsgQF1rqF+4QZQsf1VA0ZYtW2Ww/1X3vsBZNZ4qWNS28qpxVNnGVqttTDI6CAAA\n",
              "AE4BnsRqQj8AC/RPxw/Et4SOXvSGlIbrl28MKIw7LfoOHX6quKB1T3qI6XEiBDDqWh0AcaLE3ZHh\n",
              "zuS2L8c7PJ0wGzYuDl3gaEGbreFZquAAAABhQZrISahBbJlMCGf//p4QACSh/O7r00t+l1NIvxm2\n",
              "+EHh4bxB5R0KlJkVJXN614naQA2UofB6dvN1XHVeF+93CrI5Viy1CPVR+znVEnFx3c3I20HTGb+L\n",
              "YfWaLFDBov+imQAAAEhBnuZFFSwn/wAJ8iRu6PRE9YEr1lO5Hp1focFPz3RSQumN2YMRaKxoxFLE\n",
              "04e/n6qNEWGbi9eJirVyWHidq5enkljMs3/IxYAAAABDAZ8HakI/AAvv76NMWCEi263aYtQSEMLX\n",
              "wTUrJpPgbkxAKdolq+c45bW+Lvb6yRDDcFGdb9CXMDrRVr0gk+uReHEjYQAAAKJBmwxJqEFsmUwI\n",
              "Z//+nhAAJKh+3gbWM5gB+v46Nt1eqCB67B3L6Zz8yN4TyfSYEnXiHmvskEOQZ+MkhFt+OhEW3er2\n",
              "Zlq6+V9tm9+W6d5rJGr1b597arhAiq8kaoz43vm0v59cu5N9RtOvYpQWRWod461++Fc8Mw492BUV\n",
              "Q7qxEzf5DeXjHGqkMk2rCHgln4H09q8vwQVuNPp5FqKdrIPSBYAAAABcQZ8qRRUsJ/8ACfMgDSZS\n",
              "fgFsVewM7YYsaf1CVNdRjlEbWe0R+qp6kaFER2UWZoDfyFBAcPS4Y6PwfJqAcai1vabOKR1qhMU+\n",
              "9tY5Yt7sX8uX80fxAEO9Hu0ghYEAAAAvAZ9JdEI/AAvvBRkA2FAl0rdfmrXFA80dlObwnWT3ARxN\n",
              "l12pC3aZxAEDbi21gpsAAAA+AZ9LakI/AAulr8DtKBHQ2qTceRjcVMa6bi7h3sASXdka0b/1BrL1\n",
              "MUF6t7YHKLPYDeb0wWtJqwIl+zM+8qcAAABcQZtPSahBbJlMCF///oywACQAuuMpn0F/YakLmTAm\n",
              "E2g7hTTmeK878WP2BfWFPDZ5QI8oAEPAjMf0MaQie0afWtliR6gzW6n8lB9ETGX7e+qnX77CPnHl\n",
              "d/egYEEAAABHQZ9tRRUsJ/8ACa57vbnAYpoI173p6k24AkJJ/43ncfueZOaBN4GrLh5zJyr8K7gK\n",
              "NsCCO8100fv2aqAkPjmsgq1MnC8A02YAAABAAZ+OakI/AAuhT6JiDXWEfSd1zWqKp9igecWQs/Pq\n",
              "HqCVUzox6r0/uSje5MofbLMNsCNq7f6Xhyi/T97gBX8i0gAAAJdBm5NJqEFsmUwIV//+OEAAi3xe\n",
              "BjZQBF+THi9frIubuDS3Fhan4IJslm5zvV0+fVHcfrO6Oa0KSCXlXL3dMIfuSpligqnNvpocqqy/\n",
              "IdMzUSl0p//Db75P32TRzOgsjaDBHQUcEh6++fUJSND/YMqC0kXFrBAouE7yp58l41CMvbvSQ/wB\n",
              "ZQbYUGLHABIsLEewXKU4/wNTAAAAX0GfsUUVLCf/AAmubQzRKGpUcu82/J4c5Au4JwHxEgWLioVs\n",
              "40OgY2d1P11FiX1KFeun6n9XqBNgum/K7dDSYkD97BMBDDe1Myu4cShtBT2Zjk0Rh0ikxQHFzRw2\n",
              "egQ8AAAAQQGf0HRCPwALoGVzFBczZGN/AKSgb/NTtHT4d2zWPeP2D3tYXUM5NLUVkmMQS8FwF006\n",
              "WsS38nwqF0qQbwwUTAMWAAAAUAGf0mpCPwALopufrFnX20NuEk9gi9M7SBscOQvF8fkb1o/sJq2r\n",
              "cjCnY7vjAyEHarhe/45jj/+nNd+klV0SS/FRUKnpln+WMOuqIX3IN+uBAAAAbkGb1EmoQWyZTAhX\n",
              "//44QACGyXcViAK1T/HQj7wnX8sV99ht9rLq7p2jOQWbTFowsnNr5sdCAel0aoI01tbmB1uMeVOE\n",
              "mrQ6AkDYw9VNder+CV9j5i4DGdwyxAlyGBOE0L3cQLFO+NSC2XCrsx6RAAAASEGb9UnhClJlMCFf\n",
              "/jhAAIZ7WwrAER3tB1hhMUO5nv7Ct++p213A/HLuqG0Ww1GBWayVNftnbJy2fk7D/KlHp5eWy6zD\n",
              "LZ14QQAAAGlBmhZJ4Q6JlMCFf/44QACHFM9z9UIAiQ61O2jKxNF2jsfPCdmMlnTv/jH5Bsb3nM8A\n",
              "kiVFiHuf9jfTwiQglIikDkjVy0yJvhEm4cnAhMuPF0L1F8zTA2C196B/QXL5heuqtGxB9Pep5LAA\n",
              "AABTQZo3SeEPJlMCF//+jLAAIxSwxLb7mfaf9kLEy4jcif7+2ScXEVdqL/QBeI2gvddEzAEM4jhM\n",
              "D3dVspRlXA50tGggOoaPIRXk92ZhYw60jOVPZRgAAAAwQZpYSeEPJlMCF//+jLAAIxSwugab603H\n",
              "ZAVJJLcg99oUdmbfJwSY1vxTktrHP94RAAAAbkGaeknhDyZTBRE8K//+OEAAhqS4sqrAfl775G7z\n",
              "wJWAozl1s0kj1iEfK8Nc3P4qgl7ojvMheHZzk9QgFsCmaIjnwRGwcEJgcUgSH0xSGcPBTx/Nq3CY\n",
              "syR2ero65ljpAd6pXH2W/Gq3zmg0R/TMAAAAQQGemWpCPwALWpL+nge64xrWUbbDv4GMse9USkxJ\n",
              "ts7/l2/N+ksMa/uRY+caYwPX67UOQyacpX02YTqU56FY8RfMAAAAQEGanEnhDyZTBTwj//3hAAH6\n",
              "n1oJkPBdE9BQ1WlVG4lNKrQZ26g3XUxp5GbRb1Bf9AXkP8hGKoov2R7dLro2hrkAAAA4AZ67akI/\n",
              "AAsRT6NMWCEi263aYtSoV8g8dxkPdeL9lbk/0wLpNnb1rwzxCtNuksAnNQqGiaMGFf4AAA/vbW9v\n",
              "dgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAAHl8AAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAA\n",
              "AAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAADxl0\n",
              "cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAHl8AAAAAAAAAAAAAAAAAAAAAAAEAAAAA\n",
              "AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAA2AAAAH4AAAAAAAkZWR0cwAAABxlbHN0AAAA\n",
              "AAAAAAEAAB5fAAACAAABAAAAAA6RbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAAoAAABNwBVxAAA\n",
              "AAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAAOPG1pbmYAAAAU\n",
              "dm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAADfxz\n",
              "dGJsAAAAtHN0c2QAAAAAAAAAAQAAAKRhdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAA2AB+ABI\n",
              "AAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAAMmF2Y0MB\n",
              "ZAAf/+EAGWdkAB+s2UDYEH5YQAAAAwBAAAAUA8YMZYABAAZo6+PLIsAAAAAcdXVpZGtoQPJfJE/F\n",
              "ujmlG88DI/MAAAAAAAAAGHN0dHMAAAAAAAAAAQAAATcAAAEAAAAAGHN0c3MAAAAAAAAAAgAAAAEA\n",
              "AAD7AAAH8GN0dHMAAAAAAAAA/AAAAAEAAAIAAAAAAQAAAwAAAAABAAABAAAAAAYAAAIAAAAAAQAA\n",
              "BQAAAAABAAACAAAAAAEAAAAAAAAAAQAAAQAAAAABAAAEAAAAAAIAAAEAAAAAAQAAAwAAAAABAAAB\n",
              "AAAAAAEAAAMAAAAAAQAAAQAAAAABAAAEAAAAAAIAAAEAAAAABAAAAgAAAAABAAADAAAAAAEAAAEA\n",
              "AAAAAQAAAgAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAQAAAAAAgAAAQAA\n",
              "AAABAAAEAAAAAAIAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAA\n",
              "AAEAAAEAAAAACQAAAgAAAAABAAADAAAAAAEAAAEAAAAAAQAABQAAAAABAAACAAAAAAEAAAAAAAAA\n",
              "AQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAQAAAAAAgAAAQAAAAAB\n",
              "AAAFAAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEA\n",
              "AAEAAAAAAQAABQAAAAABAAACAAAAAAEAAAAAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAA\n",
              "BQAAAAABAAACAAAAAAEAAAAAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAABAAAAAACAAAB\n",
              "AAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEAAAEAAAAAAQAABQAAAAABAAACAAAAAAEAAAAA\n",
              "AAAAAQAAAQAAAAABAAAEAAAAAAIAAAEAAAAABAAAAgAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAA\n",
              "AAABAAABAAAAAAEAAAQAAAAAAgAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAA\n",
              "AAEAAAQAAAAAAgAAAQAAAAABAAAFAAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAQAAAAA\n",
              "AgAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAQAAAAAAgAAAQAAAAAB\n",
              "AAAFAAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEA\n",
              "AAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAA\n",
              "AgAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAA\n",
              "AAAAAAEAAAEAAAAAAQAABQAAAAABAAACAAAAAAEAAAAAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEA\n",
              "AAAAAQAABQAAAAABAAACAAAAAAEAAAAAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAABAAA\n",
              "AAACAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEAAAEAAAAAAQAABQAAAAABAAACAAAA\n",
              "AAEAAAAAAAAAAQAAAQAAAAABAAAFAAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAQAAAAA\n",
              "AgAAAQAAAAABAAAFAAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAQAAAAAAgAAAQAAAAAB\n",
              "AAADAAAAAAEAAAEAAAAABwAAAgAAAAABAAADAAAAAAEAAAEAAAAAAQAABQAAAAABAAACAAAAAAEA\n",
              "AAAAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAQAAAAAAgAA\n",
              "AQAAAAABAAAEAAAAAAIAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAQAAAAAAgAAAQAAAAABAAAF\n",
              "AAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAQAAAAAAgAAAQAAAAABAAADAAAAAAEAAAEA\n",
              "AAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAAFAAAAAAEAAAIAAAAAAQAAAAAA\n",
              "AAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAAEAAAAAAIAAAEAAAAACQAAAgAAAAABAAADAAAA\n",
              "AAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAQAAAAAAgAAAQAAAAABAAAFAAAAAAEAAAIAAAAA\n",
              "AQAAAAAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEAAAEAAAAAAQAAAwAAAAAB\n",
              "AAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEAAAEAAAAAAQAABQAAAAABAAACAAAAAAEA\n",
              "AAAAAAAAAQAAAQAAAAABAAAFAAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAUAAAAAAQAA\n",
              "AgAAAAABAAAAAAAAAAEAAAEAAAAAAQAABAAAAAACAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAA\n",
              "AAAAAAEAAAEAAAAAAQAABAAAAAACAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEAAAEA\n",
              "AAAABQAAAgAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAABxzdHNjAAAAAAAAAAEA\n",
              "AAABAAABNwAAAAEAAATwc3RzegAAAAAAAAAAAAABNwAAEMkAAAMYAAABUwAAArsAAAEDAAAA1AAA\n",
              "AN8AAACqAAAAlQAAAkUAAACLAAAAgwAAAFQAAACnAAAAVgAAAEMAAAD/AAAAWwAAAS0AAABLAAAB\n",
              "YQAAAGgAAABUAAAA/AAAAJkAAABpAAAAawAAAMIAAABMAAAAaAAAAN4AAABcAAAAmwAAAFIAAACy\n",
              "AAAAVQAAAEkAAACIAAAAWgAAAEoAAACNAAAATQAAAIAAAABYAAAARQAAAEYAAABtAAAAWwAAAFsA\n",
              "AABVAAAAbwAAAIEAAACSAAAAlAAAAJkAAACOAAAATAAAAHsAAABUAAAASwAAAEYAAAC5AAAAOgAA\n",
              "AIMAAABIAAAArQAAAFYAAABVAAABEgAAAFsAAABrAAAARgAAANkAAABjAAAATAAAAEcAAAC2AAAA\n",
              "TwAAADMAAABBAAAAYQAAAEMAAABxAAAANwAAAEIAAABCAAAARgAAADsAAACJAAAAWgAAAEYAAAB6\n",
              "AAAAWAAAAC4AAABNAAAAkQAAAH8AAABfAAAAdAAAAHwAAABGAAAAPAAAAGcAAABmAAAAagAAAF0A\n",
              "AABgAAAAUAAAAF8AAAA+AAAAaQAAAEEAAAA5AAAAcQAAADAAAABZAAAAOQAAAFgAAAA9AAAANwAA\n",
              "AKEAAABIAAAASwAAADsAAABVAAAARAAAAEEAAACbAAAAYAAAAI4AAABdAAAAfQAAAFEAAABKAAAA\n",
              "yAAAAEwAAABWAAAATAAAAJAAAABlAAAAUQAAAEwAAAB7AAAAWwAAAHYAAABnAAAAmgAAAF4AAACD\n",
              "AAAAoQAAAFEAAACwAAAATQAAAMkAAABUAAAAXQAAAEcAAADGAAAAZwAAAFUAAABPAAAAgQAAAFgA\n",
              "AACdAAAAXgAAAEkAAAA7AAAAigAAAEYAAACMAAAATgAAAEkAAAEKAAAASAAAAE0AAABeAAAA3QAA\n",
              "AFQAAABKAAAARQAAAOoAAABnAAAANQAAAFYAAABPAAAARQAAADoAAACiAAAAYgAAADUAAAA+AAAA\n",
              "cAAAAEYAAAA/AAAAeAAAAEYAAABmAAAASAAAAEEAAABaAAAAZAAAAFgAAABxAAAAswAAAEcAAACI\n",
              "AAAAWQAAAD8AAABCAAAAbwAAAE0AAABSAAAAPAAAAGEAAABFAAAAQQAAAHIAAABKAAAALQAAAGYA\n",
              "AABBAAAAYQAAAEAAAAA5AAAApQAAAHYAAABGAAAARQAAAHIAAABBAAAAOwAAAKwAAABKAAAAZgAA\n",
              "AEQAAACAAAAATAAAAKYAAABeAAAARwAAADsAAABpAAAAQQAAAJ0AAABVAAAAUAAAAKUAAACgAAAA\n",
              "qgAAAGwAABQAAAABPAAAAGgAAAB4AAAAYwAAAK0AAABeAAAAgAAAAE0AAACZAAAAVgAAAEMAAAFe\n",
              "AAAAcAAAAD0AAABXAAABJgAAAHwAAABSAAAAWQAAANYAAABvAAAA3QAAAGkAAACUAAAATQAAAOIA\n",
              "AACnAAAAhgAAAEUAAACZAAAAZQAAAEIAAABLAAAA3gAAAGQAAABoAAAAUgAAAGUAAABMAAAARwAA\n",
              "AKYAAABgAAAAMwAAAEIAAABgAAAASwAAAEQAAACbAAAAYwAAAEUAAABUAAAAcgAAAEwAAABtAAAA\n",
              "VwAAADQAAAByAAAARQAAAEQAAAA8AAAAFHN0Y28AAAAAAAAAAQAAACwAAABidWR0YQAAAFptZXRh\n",
              "AAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAd\n",
              "ZGF0YQAAAAEAAAAATGF2ZjU3LjgzLjEwMA==\n",
              "\">\n",
              "  Your browser does not support the video tag.\n",
              "</video>"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {},
          "execution_count": 88
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 864x504 with 1 Axes>"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-iSGTq0Q3Lcm"
      },
      "source": [
        "# Conclusion\n",
        "If you made it this far, then congratulations - you have the patience of a monk. You should now also understand how to load neuromorphic datasets using Tonic and then train a network using snnTorch. [In the next tutorial](https://snntorch.readthedocs.io/en/latest/tutorials/index.html), we will learn more advanced techniques, such as introducing long-term temporal dynamics into our SNNs.\n"
      ],
      "id": "-iSGTq0Q3Lcm"
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "h-K_DUnsMKnv"
      },
      "source": [
        "# Additional Resources\n",
        "* [Check out the snnTorch GitHub project here.](https://github.com/jeshraghian/snntorch)\n",
        "* [The Tonic GitHub project can be found here.](https://github.com/neuromorphs/tonic)\n",
        "* The N-MNIST Dataset was originally published in the following paper: [Orchard, G.; Cohen, G.; Jayawant, A.; and Thakor, N.  “Converting Static Image Datasets to Spiking Neuromorphic Datasets Using Saccades\", Frontiers in Neuroscience, vol.9, no.437, Oct. 2015.](https://www.frontiersin.org/articles/10.3389/fnins.2015.00437/full) \n",
        "* For further information about how N-MNIST was created, please refer to [Garrick Orchard's website here.](https://www.garrickorchard.com/datasets/n-mnist)"
      ],
      "id": "h-K_DUnsMKnv"
    }
  ]
}
